:root{color-scheme:light;--font-text:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", "Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", Georgia, "Times New Roman", serif;--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--font-meta:ui-monospace, "SF Mono", SFMono-Regular, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;--step--2:.8125rem;--step--1:clamp(.8125rem, .79rem + .1vw, .875rem);--step-0:clamp(1.0625rem, 1.02rem + .2vw, 1.1875rem);--step-1:clamp(1.3rem, 1.22rem + .4vw, 1.55rem);--step-2:clamp(1.65rem, 1.48rem + .85vw, 2.15rem);--step-3:clamp(2.1rem, 1.78rem + 1.6vw, 3rem);--leading-text:1.72;--leading-tight:1.3;--measure:42rem;--page:54rem;--gutter:clamp(1.25rem, .5rem + 3vw, 3rem);--gap-block:clamp(3rem, 2rem + 5vw, 5.5rem);--radius:.625rem;--radius-inline:calc(var(--radius) / 2);--paper:#fcfbf8;--ink:#1b1a17;--muted:#6b665d;--rule:#e3dfd5;--rule-strong:#1b1a17;--accent:#a13c2b;--accent-ink:#7c2c1e;--selection:#ecdfc9;--code-bg:#f3f0e9}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--paper:#141311;--ink:#e9e5dc;--muted:#9c9588;--rule:#2f2c26;--rule-strong:#e9e5dc;--accent:#e38a6d;--accent-ink:#f0a486;--selection:#3b3226;--code-bg:#1d1b18}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-text);font-size:var(--step-0);line-height:var(--leading-text);text-rendering:optimizelegibility;min-height:100vh}img,picture,video,svg{max-width:100%;height:auto;display:block}h1,h2,h3,h4{font-family:var(--font-ui);font-weight:560;line-height:var(--leading-tight);text-wrap:balance}p{text-wrap:pretty}ul,ol{padding-inline-start:1.35em}li{text-wrap:pretty}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}button,input,textarea,select{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--selection)}.prose pre,.nav-dialog{scrollbar-width:thin;scrollbar-color:var(--rule) transparent}.prose pre::-webkit-scrollbar,.nav-dialog::-webkit-scrollbar{width:.55rem;height:.55rem}.prose pre::-webkit-scrollbar-track,.nav-dialog::-webkit-scrollbar-track{background:0 0}.prose pre::-webkit-scrollbar-thumb,.nav-dialog::-webkit-scrollbar-thumb{background:var(--rule);border-radius:var(--radius)}.prose pre::-webkit-scrollbar-thumb:hover,.nav-dialog::-webkit-scrollbar-thumb:hover{background:var(--muted)}.prose pre::-webkit-scrollbar-corner,.nav-dialog::-webkit-scrollbar-corner{background:0 0}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}a:not([class]){color:var(--accent-ink);text-decoration:underline;text-decoration-color:color-mix(in oklab, var(--accent) 45%, transparent)}a:not([class]):hover{color:var(--accent);text-decoration-color:currentColor}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--ink);color:var(--paper);border-radius:var(--radius);font-family:var(--font-ui);font-size:var(--step--1);padding:.5rem .9rem;text-decoration:none;position:absolute;inset-block-start:0;inset-inline-start:var(--gutter);transform:translateY(-120%)}.skip-link:focus-visible{transform:translateY(0)}.meta{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.08em;color:var(--muted);font-variant-numeric:tabular-nums;text-transform:uppercase;font-weight:400;line-height:1.5}.meta a{border-bottom:1px solid var(--rule);text-decoration:none}.meta a:hover{color:var(--accent-ink);border-bottom-color:var(--accent)}.page{max-width:var(--page);min-height:100vh;padding-inline:var(--gutter);grid-template-rows:auto 1fr auto;margin-inline:auto;display:grid}.page>main{padding-block:var(--gap-block)}.page>*{min-inline-size:0}.site-header{border-block-start:3px solid var(--rule-strong);border-block-end:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 2rem;padding-block:1.5rem 1.25rem;display:flex}.wordmark{font-family:var(--font-ui);align-items:center;gap:.5rem;font-size:1.0625rem;font-weight:600;text-decoration:none;display:inline-flex}.logo{flex:none;block-size:1.6rem;inline-size:1.6rem}.wordmark:hover{color:var(--accent-ink)}.site-nav ul{flex-wrap:wrap;gap:.35rem clamp(.9rem,.5rem + 1.6vw,1.75rem);padding:0;list-style:none;display:flex}.site-nav a{font-family:var(--font-ui);font-size:var(--step--1);color:var(--muted);border-block-end:1px solid #0000;padding-block-end:.15rem;text-decoration:none}.site-nav a:hover{color:var(--ink);border-block-end-color:var(--ink)}.site-nav a[aria-current=page]{color:var(--ink);border-block-end-color:var(--accent)}.site-footer{border-block-start:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;padding-block:1.5rem 2.5rem;display:flex}.site-footer .meta{text-transform:none;letter-spacing:.04em}.section+.section{margin-block-start:var(--gap-block)}.section-title{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);align-items:baseline;gap:1rem;margin-block-end:1.75rem;font-weight:500;display:flex}.section-title:after{content:"";border-block-start:1px solid var(--rule);flex:auto;transform:translateY(-.35em)}.section-title a{color:var(--muted);text-decoration:none}.section-title a:hover{color:var(--accent-ink)}.page-title{font-size:var(--step-2)}.lede{max-width:var(--measure);color:var(--muted);margin-block-start:.75rem}.home-intro{max-width:var(--measure)}.home-intro h1{font-size:var(--step-3)}.home-intro .statement{font-size:var(--step-1);margin-block-start:1.5rem;line-height:1.5}.home-intro p+p{margin-block-start:1.1rem}.home-intro .placeholder-note{border-inline-start:2px solid var(--accent);font-family:var(--font-ui);font-size:var(--step--1);color:var(--muted);margin-block-start:1.75rem;padding-inline-start:1rem;line-height:1.6}.contact-line{flex-wrap:wrap;gap:.85rem clamp(1.25rem,3vw,2rem);margin-block-start:1.75rem;display:flex}.entry-list{border-block-end:1px solid var(--rule);padding:0;list-style:none}.entry-list>li{border-block-start:1px solid var(--rule);gap:.2rem 1.5rem;padding-block:1.5rem;display:grid}.entry-list .when{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.06em;color:var(--muted);font-variant-numeric:tabular-nums;padding-block-start:.35rem}.entry-list h3{font-size:var(--step-1)}.entry-list h3 a{text-decoration:none}.entry-list--posts h3 a:after{content:"";position:absolute;inset:0}.entry-list>li{position:relative}.entry-list h3 a:hover{color:var(--accent-ink)}.entry-list .summary{max-width:var(--measure);font-size:var(--step--1);color:var(--muted);margin-block-start:.3rem;line-height:1.65}.entry-list .where{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-block-start:.4rem}.entry-list .where a{color:var(--muted);border-block-end:1px solid var(--rule);text-decoration:none}.entry-list .where a:hover{color:var(--accent-ink);border-block-end-color:var(--accent)}@media (width>=44rem){.entry-list>li{grid-template-columns:6.5rem minmax(0,1fr);gap:.25rem 2rem}.entry-list--projects>li{grid-template-columns:4.5rem minmax(0,1fr) 7.5rem}}.tag-list{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;gap:.15rem .6rem;margin-block-start:.6rem;padding:0;list-style:none;display:flex}.tag-list>li+li:before{content:"/";color:var(--rule);margin-inline-end:.6rem}.tag-list a{color:inherit;text-decoration:none}.tag-list a:hover{color:var(--accent-ink)}.filter-bar{border-block-end:1px solid var(--rule);flex-wrap:wrap;align-items:baseline;gap:.5rem 1.25rem;margin-block:1.5rem 2.5rem;padding-block-end:1rem;display:flex}.filter-bar a{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-decoration:none}.filter-bar a:hover{color:var(--accent-ink)}.filter-bar a[aria-current=true]{color:var(--ink);border-block-end:1px solid var(--accent)}.article-header{max-width:var(--measure);margin-block-end:clamp(2.25rem,1.5rem + 3vw,3.5rem)}.article-header h1{font-size:var(--step-3);margin-block-start:.6rem}.article-header .meta{margin-block-start:1.25rem}.article-footer{max-width:var(--measure);border-block-start:1px solid var(--rule);margin-block-start:3.5rem;padding-block-start:1.5rem}.nav-link{font-family:var(--font-ui);font-size:var(--step--1);color:var(--muted);text-decoration:none}.nav-link:hover{color:var(--accent-ink)}.prose{max-width:var(--measure);overflow-wrap:break-word}.prose>*+*{margin-block-start:1.3em}.prose h2,.prose h3,.prose h4{margin-block:2.4em .7em;scroll-margin-block-start:2rem}.prose h2{font-size:var(--step-1)}.prose h3{font-size:var(--step-0)}.prose h2,.prose h3,.prose h4{letter-spacing:0}.prose blockquote{border-inline-start:2px solid var(--accent);color:var(--muted);padding-inline-start:1.35rem;font-style:italic}.prose blockquote p+p{margin-block-start:.9em}.prose :is(ul,ol){padding-inline-start:1.5em}.prose li+li{margin-block-start:.45em}.prose li::marker{color:var(--muted)}code{font-family:var(--font-meta);background:var(--code-bg);border-radius:var(--radius-inline);overflow-wrap:break-word;padding:.1em .3em;font-size:.86em}.prose pre{background:var(--code-bg);border:1px solid var(--rule);border-radius:var(--radius);font-size:var(--step--1);padding:1.25rem;line-height:1.6;overflow-x:auto}pre code{font-size:inherit;background:0 0;padding:0}.prose hr{border:0;border-block-start:1px solid var(--rule);margin-block:2.6em}.prose figure{margin-block-start:1.8em}.prose figcaption{font-family:var(--font-ui);font-size:var(--step--1);color:var(--muted);margin-block-start:.6rem}.prose table{border-collapse:collapse;width:100%;font-family:var(--font-ui);font-size:var(--step--1)}.prose :is(th,td){text-align:start;border-block-end:1px solid var(--rule);overflow-wrap:anywhere;padding:.5rem .75rem}.prose th{border-block-end-color:var(--ink);font-weight:600}.empty{max-width:var(--measure);border-block:1px solid var(--rule);font-family:var(--font-ui);font-size:var(--step--1);color:var(--muted);padding-block:2.5rem}.not-found h1{font-size:var(--step-3)}.not-found p{max-width:var(--measure);margin-block-start:1.25rem}.not-found .actions{flex-wrap:wrap;gap:1.25rem;margin-block-start:2.5rem;display:flex}.page-header{max-width:var(--measure);margin-block-end:clamp(2.5rem,1.8rem + 3vw,4.5rem)}.page-header .lede{margin-block-start:1.25rem}.section--archive{margin-block-start:2.5rem}.section--archive+.section--archive{margin-block-start:var(--gap-block)}.fact-list{max-width:var(--measure);border-block-start:1px solid var(--rule);border-block-end:1px solid var(--rule);font-family:var(--font-ui);font-size:var(--step--1);margin-block:0 clamp(2.5rem,1.8rem + 3vw,4rem)}.fact-list>div{padding-block:.9rem}.fact-list>div+div{border-block-start:1px solid var(--rule)}.fact-list dt{font-family:var(--font-meta);font-size:var(--step--2);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.fact-list dd{margin:0;margin-block-start:.15rem}.fact-list dd a+a:before{content:"/";color:var(--muted);margin-inline:.5em}@media (width>=34rem){.fact-list>div{grid-template-columns:8rem minmax(0,1fr);align-items:baseline;gap:.1rem 1.5rem;display:grid}.fact-list dd{margin-block-start:0}}@media (width<=40rem){.site-nav a,.section-title a,.filter-bar a,.tag-list a,.fact-list dd a,.where a,.meta a,.nav-link,.actions a{margin-block:-.6rem;padding-block:.6rem;display:inline-block}.contact-line a,.footer-links a{margin-block:0;padding-block:.35rem}.wordmark{margin-block:-.6rem;padding-block:.6rem}.site-nav ul{gap:.1rem clamp(.9rem,2vw,1.5rem)}}@media (width<=30rem){.prose :is(th,td){padding:.4rem .5rem;font-size:.95em}.prose pre{padding:1rem .85rem}.entry-list>li{padding-block:1.35rem}.site-header{padding-block:1.25rem 1rem}}@media print{.site-header,.site-footer,.skip-link,.filter-bar,.article-footer{display:none}body{color:#000;background:#fff}.page{max-width:none}}.footer-links[data-astro-cid-nns7i3if]{flex-wrap:wrap;gap:.85rem 1.25rem;padding:0;list-style:none;display:flex}
