@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-italic.C9HzH3YL.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-italic.D7-lnxEk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-italic.DKMiL14s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-italic.u__WvvIK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fbfaf7;--bg-subtle:#f3f2ed;--bg-card:#fffefa;--bg-code:#f0f1ef;--text:#202522;--text-muted:#535d59;--text-faint:#68726d;--border:#dedfd9;--border-strong:#bfc8c2;--accent:#2458a6;--accent-hover:#173e7b;--accent-soft:#e8eff9;--shadow-sm:0 1px 2px #1018280d;--shadow-md:0 4px 16px #10182814;--radius-sm:6px;--radius:10px;--radius-lg:16px;--container:70rem;--header-h:3.75rem;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-display:"Instrument Serif", "Iowan Old Style", "Songti SC", "Source Han Serif SC", "Noto Serif CJK SC", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}[data-theme=dark]{--bg:#171c1b;--bg-subtle:#202725;--bg-card:#1d2422;--bg-code:#252d2a;--text:#f0f1eb;--text-muted:#b8c0ba;--text-faint:#a0aaa3;--border:#37413c;--border-strong:#58665e;--accent:#9bc1ff;--accent-hover:#c2d8ff;--accent-soft:#253b54;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 16px #0006}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;flex-direction:column;min-height:100vh;margin:0;font-size:1rem;line-height:1.7;display:flex}img,picture,svg,video{max-width:100%;height:auto;display:block}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;margin:0 0 .6em;font-weight:400;line-height:1.2}p{text-wrap:pretty;margin:0 0 1em}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}ul,ol{margin:0 0 1em;padding-left:1.35em}li+li{margin-top:.35em}hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}code{font-family:var(--font-mono);background:var(--bg-code);border-radius:var(--radius-sm);border:1px solid var(--border);padding:.15em .4em;font-size:.875em}pre{background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius);margin:0 0 1.5rem;padding:1rem 1.15rem;font-size:.875rem;line-height:1.6;overflow-x:auto}pre code{font-size:inherit;background:0 0;border:0;padding:0}.astro-code,.astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}pre.astro-code{background:var(--shiki-light-bg,var(--bg-code))}[data-theme=dark] pre.astro-code{background:var(--shiki-dark-bg,var(--bg-code))}blockquote{border-left:3px solid var(--accent);color:var(--text-muted);margin:0 0 1.5rem;padding:.2rem 0 .2rem 1.15rem}table{border-collapse:collapse;width:100%;margin:0 0 1.5rem;font-size:.9375rem;display:block;overflow-x:auto}th,td{border:1px solid var(--border);text-align:left;padding:.55rem .85rem}th{background:var(--bg-subtle);font-weight:600}::view-transition-old(root){animation:.14s cubic-bezier(.4,0,1,1) both page-out}::view-transition-new(root){animation:.22s cubic-bezier(0,0,.2,1) 60ms both page-in}@keyframes page-out{to{opacity:0}}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}}.site-header,.site-footer{view-transition-name:none}@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.skip-link{z-index:100;background:var(--accent);color:#fff;border-radius:0 0 var(--radius-sm) 0;padding:.6rem 1rem;font-weight:600;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:1.25rem}main{flex:1 0 auto;padding-block:2.5rem 4rem}.section{margin-bottom:3.5rem}.section-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.25rem;display:flex}.section-head h2{margin:0;font-size:1.35rem}.section-head a{color:var(--text-muted);white-space:nowrap;font-size:.9rem}.section-head a:hover{color:var(--accent)}.page-title{margin-bottom:.5rem;font-size:clamp(1.85rem,4vw,2.5rem)}.page-lead{color:var(--text-muted);max-width:46rem;margin-bottom:2rem;font-size:1.0625rem}.site-header{z-index:50;height:var(--header-h);background:color-mix(in srgb, var(--bg) 85%, transparent);backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:1rem;height:100%;display:flex}.site-brand{color:var(--text);letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1rem;font-weight:700;display:flex}.site-brand:hover{color:var(--text);text-decoration:none}.site-brand__mark{background:var(--accent);border-radius:3px;flex:none;width:1.5rem;height:1.5rem}.site-nav{align-items:center;gap:.25rem;display:flex}.site-nav a{color:var(--text-muted);border-radius:var(--radius-sm);padding:.4rem .7rem;font-size:.9375rem;font-weight:500}.site-nav a:hover{color:var(--text);background:var(--bg-subtle);text-decoration:none}.site-nav a[aria-current=page]{color:var(--accent);background:var(--accent-soft)}.theme-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);width:2.1rem;height:2.1rem;color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong);background:var(--bg-subtle)}.theme-toggle svg{width:1.05rem;height:1.05rem}.hero{padding-block:1.5rem 3rem}.hero__inner{flex-wrap:wrap;align-items:center;gap:1.75rem;display:flex}.hero__avatar{border:1px solid var(--border);background:var(--bg-subtle);border-radius:50%;flex:none;width:5.5rem;height:5.5rem}.hero__body{flex:20rem;min-width:0}.hero__name{margin:0 0 .3rem;font-size:clamp(1.6rem,4vw,2.1rem)}.hero__tagline{color:var(--text-muted);margin:0 0 1rem;font-size:1.0625rem}.hero__actions{flex-wrap:wrap;gap:.6rem;display:flex}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--text);cursor:pointer;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.9375rem;font-weight:500;line-height:1.4;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-subtle);text-decoration:none}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.card-grid{grid-template-columns:repeat(auto-fill,minmax(min(20rem,100%),1fr));gap:1rem;display:grid}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);box-shadow:var(--shadow-sm);flex-direction:column;gap:.5rem;padding:1.25rem;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}a.card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);text-decoration:none;transform:translateY(-2px)}.card__title{color:var(--text);margin:0;font-size:1.0625rem}a.card:hover .card__title{color:var(--accent)}.card__desc{color:var(--text-muted);flex:1;margin:0;font-size:.9375rem}.card__meta{color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.8125rem;display:flex}.card__links{gap:.75rem;margin-top:.25rem;font-size:.875rem;display:flex}.tag{background:var(--bg-subtle);border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:.1rem .5rem;font-size:.75rem;line-height:1.6;display:inline-block}.tag-list{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li{margin:0}.post-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.post-item{border-bottom:1px solid var(--border);flex-direction:column;gap:.35rem;margin:0;padding:1.15rem 0;display:flex}.post-item__title{margin:0;font-size:1.0625rem;font-weight:600}.post-item__title a{color:var(--text)}.post-item__title a:hover{color:var(--accent);text-decoration:none}.post-item__desc{color:var(--text-muted);margin:0;font-size:.9375rem}.post-item__meta{color:var(--text-faint);flex-wrap:wrap;gap:.75rem;font-size:.8125rem;display:flex}.prose{max-width:46rem}.prose>:last-child{margin-bottom:0}.prose h2{border-bottom:1px solid var(--border);margin-top:2.25rem;padding-bottom:.3rem;font-size:1.4rem}.prose h3{margin-top:1.75rem;font-size:1.15rem}.post-header{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:1.5rem}.post-header h1{margin-bottom:.5rem;font-size:clamp(1.7rem,4vw,2.25rem)}.post-header__meta{color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.75rem;font-size:.875rem;display:flex}.post-nav{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.5rem;font-size:.9375rem;display:flex}.site-footer{border-top:1px solid var(--border);background:var(--bg-subtle);color:var(--text-muted);padding-block:1.75rem;font-size:.875rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.site-footer__links{flex-wrap:wrap;gap:1rem;display:flex}.error-page{text-align:center;padding-block:4rem}.error-page__code{color:var(--accent);font-size:4rem;font-weight:700;line-height:1;font-family:var(--font-mono);margin:0 0 .75rem}::selection{background:var(--accent);color:#fff}.reading-progress{background:var(--accent);z-index:100;pointer-events:none;width:0;height:2px;transition:width 80ms linear;position:fixed;top:0;left:0}@media (prefers-reduced-motion:reduce){.reading-progress{transition:none}}.prose>p:first-of-type:first-letter{font-family:var(--font-display);float:left;color:var(--accent);margin:.12em .12em 0 0;font-size:4.5em;font-weight:400;line-height:.85}blockquote.pull-quote{font-family:var(--font-display);border-left:3px solid var(--accent);color:var(--text);background:0 0;margin:2rem 0;padding:.25rem 0 .25rem 1.5rem;font-size:1.5rem;font-style:italic;line-height:1.4}blockquote.pull-quote:before{content:"“";vertical-align:-.4em;color:var(--accent);margin-right:.1em;font-size:3rem;line-height:0}.post-kicker{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--text-muted);flex-wrap:wrap;align-items:baseline;gap:1rem;margin-bottom:1.5rem;font-size:.75rem;display:flex}.post-kicker__number{color:var(--accent);font-feature-settings:"lnum";font-weight:600}.post-list-numbered{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.post-list-numbered>li{border-bottom:1px solid var(--border);grid-template-columns:4rem 1fr;align-items:baseline;gap:1.5rem;padding:1.75rem 0;display:grid}.post-list-number{font-family:var(--font-display);color:var(--text-faint);font-feature-settings:"lnum";text-align:right;font-size:2.25rem;line-height:1}.post-list-numbered li:hover .post-list-number{color:var(--accent)}.post-list-main{flex-direction:column;gap:.4rem;min-width:0;display:flex}.post-list-title{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:400}.post-list-title a{color:var(--text)}.post-list-title a:hover{color:var(--accent);text-decoration:none}.post-list-desc{color:var(--text-muted);margin:0;font-size:.9375rem}.post-list-meta{color:var(--text-faint);font-size:.8125rem;font-family:var(--font-mono);flex-wrap:wrap;gap:.75rem;display:flex}.post-cover{aspect-ratio:1200/630;object-fit:cover;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);width:100%;height:auto;display:block}.post-cover--hero{margin:0 0 2.5rem}.post-list-cover{flex-shrink:0;width:14rem}.post-list-numbered--cover>li{grid-template-columns:4rem 1fr auto;align-items:center}@media (width>=56rem){.post-header h1{font-size:clamp(2.25rem,4vw,3rem)}}@media (width<=40rem){:root{--header-h:3.5rem}.hero__inner{gap:1.25rem}.hero__avatar{width:4.25rem;height:4.25rem}.site-nav a{padding:.35rem .5rem;font-size:.875rem}}@media (width<=56rem){.post-list-numbered--cover>li{grid-template-columns:4rem 1fr;align-items:baseline}.post-list-cover{display:none}}.home-eyebrow,.home-section__index,.home-hero__aside-label,.home-hero__aside-bottom,.featured-project__label{font-family:var(--font-mono);letter-spacing:.12em;font-size:.72rem;font-weight:600}.home-hero{border-bottom:1px solid var(--border-strong);grid-template-columns:minmax(0,1fr) minmax(15rem,20rem);align-items:end;gap:clamp(2rem,7vw,6rem);padding:clamp(3.5rem,7vw,6.5rem) 0 5rem;display:grid}.home-eyebrow{color:var(--accent);align-items:center;gap:.75rem;margin-bottom:1.75rem;display:flex}.home-eyebrow__rule{background:currentColor;width:1.6rem;height:1px;display:inline-block}.home-hero__title{letter-spacing:-.045em;margin-bottom:1.5rem;font-size:clamp(3rem,6.5vw,5.5rem);line-height:1.11}.home-hero__title em{color:var(--accent);font-style:normal}.home-hero__intro{max-width:37rem;color:var(--text-muted);margin-bottom:1.8rem;font-size:clamp(1rem,1.5vw,1.125rem);line-height:1.85}.home-hero__actions{flex-wrap:wrap;align-items:center;gap:1.5rem;display:flex}.home-hero__actions .btn{padding:.7rem 1.05rem}.home-text-link,.home-section__heading>a,.home-outro__body>a{color:var(--text);white-space:nowrap;font-size:.925rem;font-weight:600;text-decoration:none}.home-text-link:hover,.home-section__heading>a:hover,.home-outro__body>a:hover{color:var(--accent);text-decoration:none}.home-hero__aside{border-left:1px solid var(--border-strong);padding:1.4rem 0 0 1.5rem}.home-hero__aside-label{color:var(--accent)}.home-hero__aside-rule{background:var(--border);width:100%;height:1px;margin:1.2rem 0 1.6rem}.home-hero__aside p{font-family:var(--font-display);margin:0 0 1rem;font-size:clamp(1.3rem,2vw,1.65rem);line-height:1.3}.home-hero__aside p span{color:var(--accent)}.home-hero__aside-bottom{color:var(--text-faint);letter-spacing:.04em;margin-top:2.5rem;display:block}.home-section{padding-top:clamp(3.5rem,6vw,5rem)}.home-section__heading{justify-content:space-between;align-items:end;gap:1.5rem;margin-bottom:1.5rem;display:flex}.home-section__index{color:var(--accent);margin-bottom:.6rem}.home-section__heading h2{margin:0;font-size:clamp(2rem,3.5vw,3rem)}.home-section__heading>a{padding-bottom:.3rem}.featured-project{border:1px solid var(--border);background:var(--bg-card);grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);display:grid}.featured-project__visual{color:#183a50;background:#dce6e9;flex-direction:column;justify-content:space-between;min-height:23rem;padding:1.35rem;display:flex;overflow:hidden}.featured-project__visual-top,.featured-project__visual-bottom{font-family:var(--font-mono);letter-spacing:.05em;border-bottom:1px solid #183a5052;justify-content:space-between;gap:1rem;padding-bottom:.6rem;font-size:.66rem;display:flex}.featured-project__visual-bottom{border-top:1px solid #183a5052;border-bottom:0;padding-top:.6rem;padding-bottom:0}.featured-project__visual-body{padding:2rem 0;position:relative}.featured-project__visual-body>span{font-family:var(--font-mono);letter-spacing:.17em;margin-bottom:1.15rem;font-size:.7rem;display:block}.featured-project__visual-body strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(2.5rem,4.5vw,4.25rem);font-weight:400;line-height:1.13;display:block}.featured-project__visual-body i{opacity:.55;background:currentColor;width:6rem;height:1px;display:block;position:absolute;bottom:2rem;right:0}.featured-project__visual-body i:nth-of-type(2){width:4rem;bottom:1.5rem}.featured-project__visual-body i:nth-of-type(3){width:5rem;bottom:1rem}.featured-project__content{flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(1.5rem,4vw,3.5rem);display:flex}.featured-project__label{color:var(--accent);margin-bottom:1.2rem}.featured-project__content h3{margin-bottom:.7rem;font-size:clamp(1.7rem,3vw,2.5rem)}.featured-project__content h3 a{color:var(--text)}.featured-project__content h3 a:hover{color:var(--accent);text-decoration:none}.featured-project__desc{color:var(--text-muted);max-width:26rem;margin-bottom:1.4rem}.featured-project__links{flex-wrap:wrap;gap:1.3rem;margin-top:2.2rem;font-size:.9rem;font-weight:600;display:flex}.home-post-list>li{grid-template-columns:3rem minmax(0,1fr) 1.5rem;align-items:start;gap:clamp(1rem,2.5vw,2rem);padding-block:1.65rem}.home-post-list .post-list-number{text-align:left;color:var(--accent);font-size:1.65rem}.home-post-list .post-list-title{font-size:clamp(1.25rem,2.4vw,1.75rem)}.home-post-list__arrow{color:var(--accent);font-size:1.25rem;line-height:1.2}.home-outro{background:var(--bg-subtle);border-top:1px solid var(--border-strong);grid-template-columns:1fr 1fr;align-items:end;gap:2rem;margin-top:clamp(4rem,7vw,6rem);padding:clamp(2rem,4vw,3.5rem);display:grid}.home-outro h2{margin:0;font-size:clamp(2rem,3.2vw,2.8rem)}.home-outro__body p{color:var(--text-muted);max-width:31rem;margin-bottom:1.25rem}@media (width<=48rem){.home-hero,.featured-project,.home-outro{grid-template-columns:1fr}.home-hero{gap:2.5rem;padding-block:2.5rem 3rem}.home-hero__aside{border-left:0;border-top:1px solid var(--border-strong);padding:1.4rem 0 0}.home-hero__aside-label{margin-bottom:.75rem;display:block}.home-hero__aside p{margin:0 0 .35rem;font-size:1.2rem;display:block}.home-hero__aside-bottom,.home-hero__aside-rule{display:none}.featured-project__visual{min-height:18rem}.featured-project__content{padding:1.6rem}.featured-project__links{margin-top:1.4rem}}@media (width<=40rem){.home-hero__title{font-size:clamp(2.7rem,10vw,3.5rem)}.home-section__heading{align-items:end}.home-section__heading h2{font-size:2rem}.home-post-list>li{grid-template-columns:2rem minmax(0,1fr);gap:.75rem}.home-post-list__arrow{display:none}.post-list-numbered>li{grid-template-columns:2rem minmax(0,1fr);gap:.75rem}.post-list-numbered .post-list-number{font-size:1.35rem}.home-outro{gap:1.5rem}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
