canvas[data-astro-cid-7i4aei7c]{width:100%;height:100%;position:absolute;inset:0}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-cyrillic-ext-300-normal.D8IReVS-.woff2)format("woff2"),url(/_astro/cormorant-garamond-cyrillic-ext-300-normal.B5wCrnbP.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-cyrillic-300-normal.DZNkLIMe.woff2)format("woff2"),url(/_astro/cormorant-garamond-cyrillic-300-normal.KEduutn5.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-vietnamese-300-normal.BTzPAsHw.woff2)format("woff2"),url(/_astro/cormorant-garamond-vietnamese-300-normal.ByHlPz7v.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-latin-ext-300-normal.BsCYHBWC.woff2)format("woff2"),url(/_astro/cormorant-garamond-latin-ext-300-normal.DueGyF8j.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:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-latin-300-normal.Cw-E_7L1.woff2)format("woff2"),url(/_astro/cormorant-garamond-latin-300-normal.BuXLI6C0.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:#05060b;--fg:#ece5d6;--muted:#9a927f;--accent:#d9ac5c;--cloud:#06070ec7;--measure:60ch;color-scheme:dark;background:var(--bg);font-family:Cormorant Garamond,Songti SC,Noto Serif CJK SC,serif;font-size:1.25rem;line-height:1.55}*,:before,:after{box-sizing:border-box}html{overflow-x:clip}body{min-height:100dvh;color:var(--fg);flex-direction:column;margin:0;display:flex;overflow-x:clip}a{color:inherit;text-decoration-color:var(--accent);text-underline-offset:.2em}a:hover,main a{color:var(--accent)}main a:hover{color:#f6dfa8}.feed h2 a{color:inherit}.feed h2 a:hover{color:var(--accent)}.art{z-index:-1;pointer-events:none;position:fixed;inset:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-header,.site-footer,main{width:min(100% - 2rem, var(--measure));margin-inline:auto}.site-header{flex-direction:column;align-items:center;gap:.75rem;padding-block:2.5rem 1rem;display:flex}.site-header nav{gap:1rem;display:flex}.logo{letter-spacing:.6em;text-transform:uppercase;margin-inline-end:-.6em;font-size:1.1rem;text-decoration:none}.tagline{color:var(--muted);letter-spacing:.04em;margin:-.4rem 0 .4rem;font-size:.95rem;font-style:italic}.site-header nav[aria-label=main] a{letter-spacing:.18em;text-transform:uppercase;font-size:.78rem}.site-header .langs{font-size:.85rem}.langs [aria-current]{color:var(--accent)}.site-header nav[aria-label=main] a[aria-current]{color:#0000;background:linear-gradient(90deg,#b8862f,#f6dfa8,#fff6e0,#e0a458,#b8862f) 0 0/300% 100%;-webkit-background-clip:text;background-clip:text;font-weight:600;text-decoration-color:#d9ac5ccc;animation:3.5s ease-in-out infinite alternate shimmer}main{flex:1;padding-block:2rem 4rem}.site-footer{color:var(--muted);letter-spacing:.2em;text-transform:uppercase;justify-content:center;gap:1.5rem;padding-block:2rem;font-size:.72rem;display:flex}h1{text-align:center;letter-spacing:.02em;text-shadow:0 0 40px #ffdca04d;margin-block:1.5rem .75rem;font-size:clamp(2.6rem,8vw,5.5rem);font-weight:300;line-height:1.05;animation:22s ease-in-out infinite sway}main>article>header h1,.tag-title{text-wrap:balance;font-size:clamp(2rem,4.5vw,3.2rem);line-height:1.1}:lang(zh) :is(main>article>header h1,.tag-title){word-break:keep-all}main>article>header h1,.tag-title{margin-inline:calc(50% + min(100vw - 2rem,54rem)/-2)}.post-project{margin-block-end:0}.post-project+.post-date{margin-block-start:.15rem}.subtitle{color:var(--fg);opacity:.85;margin:0 0 1rem;font-size:1.3rem;font-style:italic}h2{font-size:1.7rem;font-weight:300;line-height:1.15}.muted{color:var(--muted)}main>p.muted,article>header,main>article>h1+p.muted{text-align:center}.tags{flex-wrap:wrap;justify-content:center;gap:.5rem 1rem;padding:0;list-style:none;display:flex}.prose{margin-top:2rem;padding-block:clamp(.25rem,2vw,1rem)}.prose :is(p,li){text-align:justify;-webkit-hyphens:auto;hyphens:auto}.prose>p{display:flow-root}.prose pre{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #d9ac5c38;border-radius:6px;margin-block:1.5rem;padding:1ch;font-size:.8em;line-height:1.5;background:linear-gradient(135deg,#6e5abe24,#d9ac5c12),#080914d9!important}.prose pre,.prose pre span{color:#e9cf98!important}.prose :not(pre)>code{color:#e9cf98;font-size:.8em}.prose pre .line{text-indent:-2ch;width:100%;padding-inline-start:2ch;display:inline-block}main>article>h2{text-align:center}.project-links{flex-wrap:wrap;justify-content:center;gap:.5rem 1.5rem;padding:0;list-style:none;display:flex}.prose :is(h2,h3){text-align:center;text-wrap:balance}.prose>p:not(:lang(zh)):first-letter{float:left;color:var(--accent);text-shadow:0 0 18px #d9ac5c59;margin:.08em .35rem 0 0;font-size:3.1em;font-weight:400;line-height:.82}@supports (initial-letter:2){.prose>p:not(:lang(zh)):first-letter{float:none;font-size:inherit;line-height:inherit;initial-letter:2;margin:0 .35rem 0 0}}.feed{text-align:center;gap:2.5rem;padding:0;list-style:none;display:grid}.feed h2{margin-block:0 .25rem}.feed>li{isolation:isolate;padding:1.5rem clamp(1.5rem,7vw,4.5rem) 2rem;animation:1.2s cubic-bezier(.2,.7,.2,1) both rise,14s ease-in-out infinite bob;position:relative}.feed>li:before{content:"✦";color:var(--accent);opacity:.7;margin-bottom:1rem;display:block}.feed>li:nth-child(2n){animation-duration:1.2s,17s;animation-direction:normal,reverse}.feed>li:nth-child(3n){animation-duration:1.2s,19s}.feed>li:nth-child(2){animation-delay:.1s,0s}.feed>li:nth-child(3){animation-delay:.2s,0s}.feed>li:nth-child(4){animation-delay:.3s,0s}@property --breath{syntax:"<length>";inherits:false;initial-value:0}.feed>li:after,main>article:after{content:"";z-index:-1;pointer-events:none;backdrop-filter:blur(6px);animation:8s ease-in-out infinite breathe;position:absolute}.feed>li:after{inset:calc(-1.5rem - var(--breath)) calc(-1rem - var(--breath));background:radial-gradient(#06070edb 50%,#06070e99 64%,#0000 78%),radial-gradient(#6e5abe47,#d9ac5c1f 55%,#0000 78%);-webkit-mask-image:radial-gradient(#000 58%,#0000 78%);mask-image:radial-gradient(#000 58%,#0000 78%)}main>article{isolation:isolate;position:relative}main>article:after{inset:calc(-2rem - var(--breath)) calc(min(-1rem, -4vw) - var(--breath)) calc(-3rem - var(--breath));background:var(--cloud);-webkit-mask-composite:source-in;-webkit-mask-image:linear-gradient(#0000,#000 7rem calc(100% - 7rem),#0000),linear-gradient(90deg,#0000,#000 5rem calc(100% - 5rem),#0000);mask-image:linear-gradient(#0000,#000 7rem calc(100% - 7rem),#0000),linear-gradient(90deg,#0000,#000 5rem calc(100% - 5rem),#0000);mask-composite:intersect}::view-transition-old(page){animation:.7s ease-in both page-out!important}::view-transition-new(page){animation:1.1s cubic-bezier(.2,.7,.2,1) both page-in!important}@keyframes page-in{0%{opacity:0;filter:blur(12px);transform:translateY(40px)}}@keyframes page-out{to{opacity:0;filter:blur(10px);transform:translateY(-30px)scale(1.02)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}@keyframes sway{0%,to{translate:0;rotate:0deg}25%{translate:-.8vw;rotate:-.3deg}75%{translate:.8vw;rotate:.3deg}}@keyframes bob{0%,to{translate:0}25%{translate:-4px -7px}75%{translate:4px 8px}}@keyframes breathe{0%,to{opacity:.8;--breath:0px}50%{opacity:1;--breath:50px}}@keyframes shimmer{to{background-position:100% 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}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
