:root{--dark-amethyst:#301a4b;--pacific-blue:#6db1bf;--lavender-blush:#ffeaec;--cotton-candy:#f39a9d;--hunter-green:#3f6c51;--color-bg:var(--lavender-blush);--color-surface:#fff;--color-border:#e5e7eb;--color-text:#1f2937;--color-text-muted:#6b7280;--color-text-subtle:#4b5563;--color-text-strong:var(--dark-amethyst);--color-link:var(--pacific-blue);--color-link-hover:var(--hunter-green);--color-tag-bg:var(--lavender-blush);--color-tag-text:var(--pacific-blue);--color-placeholder:#e5e5e5;--color-placeholder-text:#999;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-16:4rem;--font-serif:"EB Garamond", Garamond, "Palatino Linotype", Palatino, "Times New Roman", serif;--text-sm:.875rem;--text-base:1.125rem;--text-md:1.05rem;--text-lg:1.35rem;--text-xl:1.4rem;--leading:1.65;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-pill:999px;--container-max:980px;--container-pad:92vw;--container-pad-mobile:88vw}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-serif);font-size:var(--text-base);font-weight:400;line-height:var(--leading);color:var(--color-text);background:var(--color-bg);margin:0}a{color:inherit}.site-shell{flex-direction:column;min-height:100vh;display:flex}.site-shell>main{flex:1}.container{width:min(var(--container-max), var(--container-pad));margin:0 auto}.page-content{padding:var(--space-8) 0 var(--space-16)}.site-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:sticky;top:0}.site-header .container{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) 0;flex-wrap:wrap;display:flex}.site-title{font-size:var(--text-lg);color:inherit;margin:0;font-weight:700;text-decoration:none}.site-title:hover{color:var(--color-link-hover)}.nav-list{gap:var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--color-text-subtle);font-weight:500;text-decoration:none}.nav-link:hover,.nav-link.active{color:var(--color-text-strong);text-underline-offset:.2rem;text-decoration:underline}.nav-toggle{padding:var(--space-2);cursor:pointer;border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;display:none}.nav-toggle__bar{background:var(--color-text);border-radius:2px;width:22px;height:2px;transition:opacity .2s,transform .2s;display:block}.nav-toggle.is-open .nav-toggle__bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-toggle.is-open .nav-toggle__bar:nth-child(2){opacity:0}.nav-toggle.is-open .nav-toggle__bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.nav-mobile{border-top:1px solid var(--color-border);padding:var(--space-4) 0}.nav-mobile .nav-list{padding:0 calc((100% - min(var(--container-max), var(--container-pad-mobile))) / 2);flex-direction:column;gap:0}.nav-mobile .nav-link{padding:var(--space-3) 0;font-size:var(--text-lg);border-bottom:1px solid var(--color-border);display:block}@media (width<=640px){:root{--container-pad:var(--container-pad-mobile)}.nav-desktop{display:none}.nav-toggle{display:flex}.site-header .container{padding-top:var(--space-3);padding-bottom:var(--space-3)}.blog-post{padding:var(--space-4)}}.page h1{margin-top:0;margin-bottom:var(--space-3)}.page p{margin:var(--space-3) 0}.markdown{max-width:100%}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{color:var(--color-text-strong);line-height:1.3}.markdown h1{margin:0 0 var(--space-3)}.markdown h2{margin:var(--space-8) 0 var(--space-3);font-size:var(--text-xl)}.markdown h3{margin:var(--space-6) 0 var(--space-2);font-size:var(--text-lg)}.markdown h4{margin:var(--space-5) 0 var(--space-2);font-size:var(--text-md)}.markdown p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre,.markdown table{margin:var(--space-3) 0}.markdown a{color:var(--color-link);text-underline-offset:.2rem}.markdown a:hover{color:var(--color-link-hover);text-underline-offset:.2rem;text-decoration:underline}.markdown ul,.markdown ol{padding-left:1.4rem}.markdown li,.markdown li>ul,.markdown li>ol{margin:var(--space-1) 0}.markdown input[type=checkbox]{margin-right:var(--space-2);accent-color:var(--dark-amethyst)}.markdown blockquote{padding:var(--space-1) 0 var(--space-1) var(--space-4);border-left:3px solid var(--cotton-candy);color:var(--color-text-subtle);margin-left:0;margin-right:0;font-style:italic}.markdown hr{border:0;border-top:1px solid var(--color-border);margin:var(--space-8) 0}.markdown img{border-radius:var(--radius-md);max-width:100%;height:auto;margin:var(--space-4) 0;display:block}.markdown code{background:var(--color-tag-bg);border-radius:var(--radius-sm);padding:.1em .35em;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.9em}.markdown pre{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto}.markdown pre code{background:0 0;padding:0;font-size:.85em}.markdown table{border-collapse:collapse;width:100%;font-size:var(--text-md)}.markdown th,.markdown td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);vertical-align:top}.markdown th{color:var(--color-text-strong);font-weight:600}.markdown del{color:var(--color-text-muted)}.home-latest{margin-top:var(--space-10)}.home-latest h2{margin:0 0 var(--space-3);font-size:var(--text-xl);color:var(--color-text-strong);line-height:1.3}.home-latest-preview{color:var(--color-link);text-underline-offset:.2rem;text-decoration:none;display:block}.home-latest-preview:hover,.home-latest-preview:focus-visible{color:var(--color-link-hover);text-decoration:underline}.home-latest-preview:focus-visible{outline:2px solid var(--pacific-blue);outline-offset:4px;border-radius:var(--radius-sm)}.home-latest-preview h3{margin:0 0 var(--space-2);font-size:var(--text-lg);color:inherit;line-height:1}.home-latest-preview p{margin:var(--space-3) 0 0}.blog-filters{justify-content:space-between;align-items:baseline;column-gap:var(--space-8);row-gap:var(--space-2);margin:var(--space-6) 0 0;flex-wrap:wrap;display:flex}.blog-filter-row,.blog-sort-row{align-items:baseline;column-gap:var(--space-4);row-gap:var(--space-2);flex-wrap:wrap;flex:0 auto;max-width:100%;display:flex}.page .blog-filters-label{color:var(--color-text-muted);margin:0;font-style:italic}.blog-filter{appearance:none;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:var(--color-text-subtle);cursor:pointer;text-underline-offset:.2rem;background:0 0;border:0;padding:0;text-decoration:underline}.blog-filter:hover,.blog-filter.is-active{color:var(--color-text-strong)}.blog-sort-row{margin-left:auto}.blog-sort{appearance:none;font-family:inherit;font-size:inherit;line-height:inherit;color:var(--color-text-subtle);cursor:pointer;text-underline-offset:.2rem;background-color:#0000;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236b7280' d='M1.2 1.3 6 6.1l4.8-4.8'/%3E%3C/svg%3E");background-position:right .1rem center;background-repeat:no-repeat;background-size:.7em;border:0;border-radius:0;padding:0 1.15rem 0 0;text-decoration:underline}.blog-sort:hover{color:var(--color-text-strong)}@media (width<=640px){.blog-sort-row{margin-left:0}}.blog-filter:focus-visible,.blog-sort:focus-visible,.blog-tag:focus-visible,.blog-empty-reset:focus-visible{outline:2px solid var(--pacific-blue);outline-offset:2px}.page .blog-filter-count{font-size:var(--text-sm);color:var(--color-text-muted);flex-basis:100%;margin:0}.page .blog-empty{margin:var(--space-6) 0 0;color:var(--color-text-muted)}.blog-empty-reset{font-family:inherit;font-size:inherit;color:var(--color-link);cursor:pointer;text-underline-offset:.2rem;background:0 0;border:0;padding:0;text-decoration:underline}.blog-list{margin:var(--space-4) 0 0;gap:var(--space-4);padding:0;list-style:none;display:grid}.blog-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.blog-card h2{margin:0 0 var(--space-2);font-size:var(--text-xl)}.blog-meta{color:var(--color-text-muted);font-size:var(--text-md);gap:var(--space-3);flex-wrap:wrap;display:flex}.blog-tags{gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.blog-tag{appearance:none;font-family:inherit;font-size:var(--text-sm);padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);background:var(--color-tag-bg);color:var(--color-tag-text);cursor:pointer;border:0;line-height:1.4;text-decoration:none;transition:background .2s,color .2s}.blog-tag:hover{background:var(--cotton-candy);color:var(--dark-amethyst)}.blog-tag.is-active{background:var(--dark-amethyst);color:var(--lavender-blush)}.blog-post{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-6)}.blog-post .markdown h2,.blog-post .markdown h3{margin-top:var(--space-6)}.blog-post .markdown p,.blog-post .markdown li{color:#374151}.back-link{margin-bottom:var(--space-4);color:var(--color-link);display:inline-block}.back-link:hover{color:var(--color-link-hover)}.about-layout{gap:var(--space-10);align-items:flex-start;display:flex}.about-content{flex:1;min-width:0}.about-photo{aspect-ratio:3/4;object-fit:cover;object-position:center top;border-radius:var(--radius-lg);flex-shrink:0;width:260px}@media (width<=640px){.about-layout{flex-direction:column}.about-photo{aspect-ratio:3/4;width:100%}}.site-footer{border-top:1px solid var(--color-border);background:var(--color-surface);padding:var(--space-6) 0;margin-top:auto}.site-footer__inner{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.site-footer__copy,.site-footer__credit{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.site-footer__credit a{color:var(--color-text-muted);text-underline-offset:.2rem}.site-footer__credit a:hover{color:var(--color-text)}
