:root{--ink:#121214;--ink-2:#1b1c21;--ink-3:#26282e;--paper:#ece4d3;--paper-dim:#b3ac9d;--paper-faint:#6f6a60;--qing:#2a5a8b;--qing-light:#6f9fd0;--lv:#3e8f6b;--zhu:#b8342e;--zhu-light:#d9574f;--measure:42rem;--gutter:1.25rem;--serif:"Source Serif 4", Georgia, "Songti SC", serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{color-scheme:dark}body{background:var(--ink);color:var(--paper);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.75}a{color:var(--qing-light);text-underline-offset:.2em;text-decoration:none}a:hover{color:var(--zhu-light);text-decoration:underline}::selection{background:var(--qing);color:var(--paper)}.wrap{max-width:var(--measure);padding:0 var(--gutter);margin:0 auto}main.wrap{padding-top:2.5rem;padding-bottom:4rem}h1,h2,h3{letter-spacing:-.01em;color:var(--paper);font-weight:600;line-height:1.25}h1{margin:0 0 .5rem;font-size:2rem}h2{margin:2.25rem 0 .75rem;font-size:1.45rem}h3{margin:1.75rem 0 .5rem;font-size:1.15rem}p{margin:0 0 1.1rem}small,.muted{color:var(--paper-dim)}hr{border:0;border-top:1px solid var(--ink-3);margin:2.5rem 0}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-top:1px solid var(--ink-3);padding:1.25rem 0}.post-list li:first-child{border-top:0;padding-top:0}.post-list .title{color:var(--paper);font-size:1.3rem;font-weight:600}.post-list .title:hover{color:var(--zhu-light);text-decoration:none}.post-list .meta{color:var(--paper-dim);align-items:baseline;gap:.75rem;margin-bottom:.25rem;font-size:.875rem;display:flex}.post-list .desc{color:var(--paper-dim);margin:.25rem 0 0}.tag{font-family:var(--mono);color:var(--lv);font-size:.75rem}.tag:before{content:"#";opacity:.6}.article-head{margin-bottom:2rem}.article-head .meta{color:var(--paper-dim);flex-wrap:wrap;gap:.75rem;font-size:.9rem;display:flex}.prose>:first-child{margin-top:0}.prose img{border-radius:4px;max-width:100%;height:auto}.prose blockquote{border-left:3px solid var(--qing);color:var(--paper-dim);margin:1.5rem 0;padding:.25rem 0 .25rem 1.1rem}.prose blockquote p:last-child{margin-bottom:0}.prose ul,.prose ol{padding-left:1.4rem}.prose li{margin:.25rem 0}.prose code{font-family:var(--mono);background:var(--ink-2);border-radius:3px;padding:.1em .35em;font-size:.875em}.prose pre{border:1px solid var(--ink-3);border-radius:6px;margin:1.25rem 0;padding:1rem 1.1rem;font-size:.875rem;line-height:1.6;overflow-x:auto;background:var(--ink-2)!important}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;font-size:.95rem}.prose th,.prose td{border-bottom:1px solid var(--ink-3);text-align:left;padding:.4rem .6rem}.prose h2{padding-top:.5rem}.prose h2:before{content:"";background:var(--zhu);vertical-align:.15em;width:.5em;height:.5em;margin-right:.5em;display:inline-block}.site-footer{border-top:1px solid var(--ink-3);padding:2rem var(--gutter) 3rem;color:var(--paper-faint);font-size:.875rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:0;display:flex}.site-footer a{color:var(--paper-dim)}.ink-header[data-astro-cid-j7tnl3jr]{background:linear-gradient(165deg, var(--ink) 0%, var(--qing) 55%, var(--paper) 100%);height:clamp(300px,46vh,460px);position:relative;overflow:hidden}.ink-header[data-astro-cid-j7tnl3jr].compact{height:clamp(150px,22vh,200px)}canvas[data-astro-cid-j7tnl3jr].ink{width:100%;height:100%;display:block;position:absolute;inset:0}.ink-scrim[data-astro-cid-j7tnl3jr]{pointer-events:none;background:linear-gradient(to bottom, #1212148c 0%, #12121400 28%), linear-gradient(to top, var(--ink) 0%, #121214d9 22%, #12121400 65%);position:absolute;inset:0}.ink-content[data-astro-cid-j7tnl3jr]{z-index:1;flex-direction:column;justify-content:space-between;max-width:56rem;height:100%;padding-top:1.1rem;padding-bottom:1.75rem;display:flex;position:relative}.ink-nav[data-astro-cid-j7tnl3jr]{justify-content:flex-end;gap:1.5rem;font-size:.95rem;display:flex}.ink-nav[data-astro-cid-j7tnl3jr] a[data-astro-cid-j7tnl3jr]{color:var(--paper);opacity:.8;text-shadow:0 1px 8px #0009}.ink-nav[data-astro-cid-j7tnl3jr] a[data-astro-cid-j7tnl3jr]:hover,.ink-nav[data-astro-cid-j7tnl3jr] a[data-astro-cid-j7tnl3jr][aria-current=page]{opacity:1;border-bottom:1px solid var(--zhu-light);text-decoration:none}.site-title[data-astro-cid-j7tnl3jr]{letter-spacing:-.01em;white-space:nowrap;color:var(--paper);text-shadow:0 2px 18px #0000008c;font-family:Playfair Display,Georgia,serif;font-size:min(3.4rem,10.4167vw - .260417rem);font-weight:500;line-height:1.1;display:inline-block}.site-title[data-astro-cid-j7tnl3jr]:hover{color:var(--paper);text-decoration:none}.compact[data-astro-cid-j7tnl3jr] .site-title[data-astro-cid-j7tnl3jr]{font-size:clamp(1.5rem,3.5vw,2rem)}.compact[data-astro-cid-j7tnl3jr] .ink-title[data-astro-cid-j7tnl3jr]{justify-content:space-between;align-items:center;gap:1rem;display:flex}.compact[data-astro-cid-j7tnl3jr] .ink-sub[data-astro-cid-j7tnl3jr]{margin-top:0}.ink-sub[data-astro-cid-j7tnl3jr]{justify-content:space-between;align-items:center;gap:1rem;margin-top:.6rem;display:flex}.ink-explain[data-astro-cid-j7tnl3jr]{backdrop-filter:blur(6px);color:var(--paper);white-space:nowrap;background:#12121473;border:1px solid #ece4d347;border-radius:999px;flex:none;align-items:center;gap:.5rem;margin-right:2rem;padding:.45rem .6rem .45rem .85rem;font-size:.85rem;line-height:1;transition:border-color .2s,background .2s;display:inline-flex}.ink-explain[data-astro-cid-j7tnl3jr] svg[data-astro-cid-j7tnl3jr]{transition:transform .2s}.ink-explain[data-astro-cid-j7tnl3jr]:hover{color:var(--paper);border-color:var(--zhu-light);background:#121214a6;text-decoration:none}.ink-explain[data-astro-cid-j7tnl3jr]:hover svg[data-astro-cid-j7tnl3jr]{transform:translate(3px)}.ink-explain[data-astro-cid-j7tnl3jr]:focus-visible{outline:2px solid var(--zhu-light);outline-offset:3px}@media (width<=480px){.ink-explain[data-astro-cid-j7tnl3jr]{padding:.55rem}.ink-explain-label[data-astro-cid-j7tnl3jr]{display:none}}.tagline[data-astro-cid-j7tnl3jr]{color:var(--paper-dim);text-shadow:0 1px 10px #0009;margin:0;font-size:1.05rem}
