@property --f{syntax:"<length>";inherits:false;initial-value:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--lightningcss-light,#e9eaee)var(--lightningcss-dark,#100f14);--surface:var(--lightningcss-light,#dddee2)var(--lightningcss-dark,#19181e);--paper:var(--lightningcss-light,#f3f4f7)var(--lightningcss-dark,#2b2a33);--ink:var(--lightningcss-light,#100f14)var(--lightningcss-dark,#dddee2);--muted:var(--lightningcss-light,#5d5c66)var(--lightningcss-dark,#98979f);--accent:var(--lightningcss-light,#4b5967)var(--lightningcss-dark,#93a5b7);--fog:var(--lightningcss-light,#5b6976)var(--lightningcss-dark,#93a5b7);--line:var(--lightningcss-light,#c3c4cc)var(--lightningcss-dark,#2f2e37);--shadow:var(--lightningcss-light,#100f14)var(--lightningcss-dark,#000);--glass-tint-1:var(--lightningcss-light,#f0f1f5bd)var(--lightningcss-dark,#141319b8);--glass-tint-2:var(--lightningcss-light,#e4e5ea9e)var(--lightningcss-dark,#0c0b10a3);--veil-1:var(--lightningcss-light,#f3f4f7b8)var(--lightningcss-dark,#100f14d1);--veil-2:var(--lightningcss-light,#f3f4f766)var(--lightningcss-dark,#100f1480);--s-base1:var(--lightningcss-light,#b3b6bf)var(--lightningcss-dark,#4a4d58);--s-base2:var(--lightningcss-light,#6b7581)var(--lightningcss-dark,#22252d);--code-foreground:var(--lightningcss-light,#1c1b22)var(--lightningcss-dark,#dddee2);--code-background:transparent;--code-token-keyword:var(--lightningcss-light,#40566d)var(--lightningcss-dark,#9fb3c8);--code-token-constant:var(--lightningcss-light,#4b5967)var(--lightningcss-dark,#93a5b7);--code-token-string:var(--lightningcss-light,#66597a)var(--lightningcss-dark,#b9b1c9);--code-token-string-expression:var(--lightningcss-light,#66597a)var(--lightningcss-dark,#b9b1c9);--code-token-comment:var(--lightningcss-light,#6f6e78)var(--lightningcss-dark,#7b7a85);--code-token-function:var(--lightningcss-light,#100f14)var(--lightningcss-dark,#f1f2f5);--code-token-parameter:var(--lightningcss-light,#3a3942)var(--lightningcss-dark,#c5c6cc);--code-token-punctuation:var(--lightningcss-light,#5d5c66)var(--lightningcss-dark,#98979f);--code-token-link:var(--lightningcss-light,#4b5967)var(--lightningcss-dark,#93a5b7);--font-body-stack:var(--font-body), system-ui, sans-serif;--font-mono-stack:var(--font-mono), ui-monospace, SFMono-Regular, Menlo, monospace;--text-xs:.72rem;--text-sm:.875rem;--text-base:1.0625rem;--text-lg:clamp(1.15rem, 1rem + .6vw, 1.5rem);--text-xl:clamp(1.4rem, 1.1rem + 1vw, 1.9rem);--text-2xl:clamp(2rem, 1.4rem + 2.8vw, 3.75rem);--text-statement:clamp(1.45rem, 3.3vw, 3.2rem);--text-section:clamp(2.2rem, 4.4vw, 4rem);--text-cutout:clamp(2.2rem, 5.4vw, 4.3rem);--weight-label:500;--track:.2em;--max:1280px;--gutter:clamp(1.25rem, 5vw, 5rem);--section:clamp(6rem, 22vh, 14rem);--header-h:5.5rem;--ease:cubic-bezier(.16, 1, .3, 1);--poster-rest:.7;--poster-open:1.6;--poster-shadow:0 2px 4px color-mix(in srgb, var(--shadow) 8%, transparent), 0 34px 60px -22px color-mix(in srgb, var(--shadow) 42%, transparent)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@supports not (color:light-dark(#000, #fff)){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#e9eaee;--surface:#dddee2;--paper:#f3f4f7;--ink:#100f14;--muted:#5d5c66;--accent:#4b5967;--fog:#5b6976;--line:#c3c4cc;--shadow:#100f14;--glass-tint-1:#f0f1f5bd;--glass-tint-2:#e4e5ea9e;--veil-1:#f3f4f7b8;--veil-2:#f3f4f766;--s-base1:#b3b6bf;--s-base2:#6b7581;--code-foreground:#1c1b22;--code-token-keyword:#40566d;--code-token-constant:#4b5967;--code-token-string:#66597a;--code-token-string-expression:#66597a;--code-token-comment:#6f6e78;--code-token-function:#100f14;--code-token-parameter:#3a3942;--code-token-punctuation:#5d5c66;--code-token-link:#4b5967}}@supports (color:light-dark(#000, #fff)){:root.light{color-scheme:light}:root.dark{color-scheme:dark}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 1rem)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped,html.menu-open{overflow:hidden}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--font-body-stack);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-weight:400;line-height:1.6;overflow-x:clip}img,picture,svg{max-width:100%;display:block}img{height:auto}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:0}ul,ol{list-style:none}h1,h2,h3,h4{letter-spacing:-.025em;text-wrap:balance;font-weight:500;line-height:1.08}p{text-wrap:pretty}::selection{background:var(--fog);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skip{left:var(--gutter);z-index:60;background:var(--ink);color:var(--bg);font-size:var(--text-sm);padding:.5rem .9rem;position:absolute;top:.75rem;transform:translateY(-300%)}.skip:focus{transform:none}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.wrap{width:100%;max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,2.2vw,2rem);display:grid}.meta{font-family:var(--font-mono-stack);font-size:var(--text-xs);font-weight:var(--weight-label);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums}.link{transition:background-size .6s var(--ease), color .3s ease;background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;padding-bottom:.15em}.link:hover,.link:focus-visible,.link[aria-current=page],.link-underlined{background-size:100% 1px}.link-underlined:hover{color:var(--accent)}.arrow{transition:transform .5s var(--ease);display:inline-block}a:hover .arrow{transform:translate(.35em)}.site-header{z-index:40;pointer-events:none;transition:transform .6s var(--ease);padding-top:1rem;position:fixed;inset:0 0 auto}html.nav-hidden:not(.menu-open) .site-header:not(:focus-within){transform:translateY(-130%)}.bar{border:1px solid color-mix(in srgb, var(--ink) 10%, transparent);background:color-mix(in srgb, var(--bg) 62%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.4);height:3.5rem;box-shadow:0 18px 40px -26px color-mix(in srgb, var(--shadow) 45%, transparent);pointer-events:auto;border-radius:999px;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:0 .5rem 0 1.5rem;display:grid;position:relative}.brand{letter-spacing:var(--track);text-transform:uppercase;white-space:nowrap;justify-self:start;font-size:.8rem;font-weight:600;line-height:1}html.glass-on[data-travel] .brand{opacity:var(--settle,0)}html.glass-on[data-travel] .brand:focus-visible{opacity:1}.nav{align-items:center;gap:.25rem;display:flex}.nav a,.cta,.menu-btn{letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;border-radius:999px;font-size:.74rem;font-weight:600;line-height:1}.nav a{color:var(--muted);padding:.7rem 1rem;transition:background-color .3s,color .3s}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a:hover{background:color-mix(in srgb, var(--ink) 8%, transparent)}.bar-end{justify-self:end;align-items:center;gap:.25rem;display:flex}.theme-toggle{border-radius:50%;place-items:center;width:2.5rem;height:2.5rem;transition:background-color .3s;display:none}html.js .theme-toggle{display:grid}.theme-toggle:hover{background:color-mix(in srgb, var(--ink) 8%, transparent)}.theme-toggle span{width:1rem;height:1rem;transition:transform .6s var(--ease);background:linear-gradient(90deg,currentColor 50%,#0000 50%);border:1.5px solid;border-radius:50%}.theme-toggle:hover span{transform:rotate(180deg)}.cta,.menu-btn{background:var(--ink);color:var(--bg);padding:.9rem 1.25rem;transition:background-color .3s}.cta:hover,.menu-btn:hover{background:var(--accent)}.menu-btn{display:none}.bar :focus-visible{outline-offset:2px}.menu{z-index:39;padding:var(--header-h) var(--gutter) 0;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(24px);opacity:0;visibility:hidden;flex-direction:column;justify-content:center;gap:.5rem;transition:opacity .4s,visibility .4s;display:none;position:fixed;inset:0}.menu a:not(.menu-mail){letter-spacing:-.03em;opacity:0;width:max-content;max-width:100%;transition:transform .7s var(--ease), opacity .5s ease;transition-delay:calc(var(--i,0) * 60ms);font-size:clamp(2.4rem,11vw,3.5rem);font-weight:500;line-height:1.15;transform:translateY(16px)}.menu-mail{width:max-content;margin-top:2.5rem}html.menu-open .menu{opacity:1;visibility:visible}html.menu-open .menu a:not(.menu-mail){opacity:1;transform:none}.site-footer{border-top:1px solid var(--line);padding-block:2.5rem 3rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.25rem 2.5rem;display:flex}.footer-links{flex-wrap:wrap;gap:.5rem 1.75rem;display:flex}.footer-links a{transition:color .3s}.footer-links a:hover{color:var(--ink)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-up{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:none}}@keyframes grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes drift{0%{transform:translateY(-5%)scale(1.12)}to{transform:translateY(5%)scale(1.12)}}.enter{animation:fade-up 1.1s var(--ease) both;animation-delay:calc(.3s + var(--i,0) * .12s)}html.js [data-reveal]{opacity:0;transition:opacity 1s var(--ease), transform 1.2s var(--ease);transition-delay:calc(var(--i,0) * 90ms);transform:translateY(1.75rem)}html.js [data-reveal].is-in{opacity:1;transform:none}.frame{background:var(--paper);aspect-ratio:var(--ratio,3 / 2);position:relative;overflow:hidden}.frame img,.frame picture,.poster-art img,.poster-art picture,.z-poster img,.z-poster picture{object-fit:cover;width:100%;max-width:none;height:100%}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.frame img{animation:linear both drift;animation-timeline:view();animation-range:entry exit}}}.progress{display:none}@supports (animation-timeline:scroll()){.progress{z-index:50;background:var(--fog);transform-origin:0;height:2px;animation:linear both grow-x;animation-timeline:scroll(root);display:block;position:fixed;inset:0 0 auto}}@view-transition{navigation:auto}::view-transition-old(root){animation:.25s reverse both fade-in}::view-transition-new(root){animation:.5s both fade-in}@property --bleed-reach{syntax:"<percentage>";inherits:false;initial-value:100%}html.theme-bleed{--bleed-feather:22%;--bleed-time:1.1s}html.theme-bleed::view-transition-group(root){animation-duration:var(--bleed-time)}html.theme-bleed::view-transition-old(root){mix-blend-mode:normal;animation:none}html.theme-bleed::view-transition-new(root){mix-blend-mode:normal;-webkit-mask-image:radial-gradient(farthest-corner at var(--bleed-origin,50% 50%), black var(--bleed-reach), transparent calc(var(--bleed-reach) + var(--bleed-feather)));mask-image:radial-gradient(farthest-corner at var(--bleed-origin,50% 50%), black var(--bleed-reach), transparent calc(var(--bleed-reach) + var(--bleed-feather)));animation:theme-bleed var(--bleed-time) cubic-bezier(.45, 0, .25, 1) both}@keyframes theme-bleed{0%{--bleed-reach:calc(-1 * var(--bleed-feather))}to{--bleed-reach:100%}}.glass{z-index:-1;pointer-events:none;background:linear-gradient(160deg, var(--glass-tint-1), var(--glass-tint-2)), linear-gradient(135deg, var(--s-base1), var(--s-base2));position:fixed;inset:0;overflow:hidden}.glass:before{content:"";background:linear-gradient(160deg, var(--glass-tint-1), var(--glass-tint-2)), url(/tianshu-liu-aqZ3UAjs_M4-unsplash.jpg) center / cover;filter:blur(46px);position:absolute;inset:-100px}html.glass-on .glass:before{display:none}.glass svg{width:calc(100% + 200px);max-width:none;height:calc(100% + 200px);position:absolute;inset:-100px}.glass-blur{filter:blur(46px)}.glass-tint{background:linear-gradient(160deg, var(--glass-tint-1), var(--glass-tint-2));position:absolute;inset:0}html.glass-on [data-glass-text]{color:#0000}.hero{height:100svh;min-height:32rem}.hero .wrap{height:100%;position:relative}.hero-name,.page-title.cutout{font-size:var(--text-cutout);letter-spacing:var(--track);text-transform:uppercase;white-space:nowrap;font-weight:600;line-height:1}.hero-name{animation:1.2s .1s both fade-in;position:absolute;top:50%;right:calc(46% + min(3.5vw,2.8rem));transform:translateY(-50%)}html.glass-on .hero-name{animation:none}.hero-rest{position:absolute;inset:0}.hero-label,.hero-year{white-space:nowrap;color:var(--ink);animation:1.2s .6s both fade-in;position:absolute;left:54%;transform:translate(-50%)}.hero-label{top:13vh}.hero-year{bottom:9vh}.hero-rule{background:var(--ink);opacity:.55;width:1px;height:27vh;animation:grow-y 1.6s var(--ease) .3s both;position:absolute;left:54%}.hero-rule.a{transform-origin:50% 100%;top:18vh}.hero-rule.b{transform-origin:50% 0;bottom:14vh}.hero-mark{background:var(--fog);width:7px;height:7px;animation:1s .2s both fade-in;position:absolute;top:50%;left:54%;transform:translate(-50%,-50%)rotate(45deg)}.hero-side{letter-spacing:.22em;white-space:nowrap;text-transform:uppercase;font-size:clamp(1rem,1.5vw,1.4rem);font-weight:500;line-height:1;animation:1.2s .5s both fade-in;position:absolute;top:50%;left:calc(54% + min(4.5vw,3.6rem));transform:translateY(-50%)}.hero-cue{left:var(--gutter);animation:1.2s .9s both fade-in;position:absolute;bottom:9vh}.statement{--p:1;padding-block:14vh}.statement-text{font-size:var(--text-statement);letter-spacing:-.02em;grid-column:1/-1;font-weight:400;line-height:1.22}.work{--p:1;--share:.3;padding-block:8vh 6vh}.work-pin{timeline-scope:--row;flex-direction:column;gap:2rem;display:flex}.work-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;margin-bottom:clamp(1.5rem,5vh,3.5rem);display:flex}.work-head h2,.writing-head h2{font-size:var(--text-section);letter-spacing:-.035em;line-height:1.02}.work-head a:hover{color:var(--ink)}.work-foot{align-items:center;gap:1.5rem;display:flex}.work-shelf{background:var(--line);flex:1;height:1px}.work-shelf span{background:var(--ink);transform-origin:0;height:100%;animation:linear both shelf-fill;animation-timeline:--row;display:block}@keyframes shelf-fill{0%{transform:scaleX(var(--share))}to{transform:scaleX(1)}}.work-count{display:none}.poster-track{--h:min(62vh, 26rem);padding:.5rem var(--gutter) 3.5rem;scroll-timeline:--row x;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);scrollbar-width:none;gap:1rem;display:flex;overflow-x:auto}.poster-track::-webkit-scrollbar{display:none}.poster{height:var(--h);width:calc(var(--h) * var(--poster-rest));scroll-snap-align:start;box-shadow:var(--poster-shadow);transition:width .9s var(--ease), box-shadow .6s var(--ease);flex:none;display:block;position:relative;overflow:hidden}.poster-face,.poster-face-inner{--f:0px;transition:--f .9s var(--ease);position:absolute;inset:0}.poster-face{--ramp:transparent, #00000014 calc(var(--f) * .25), #00000080 calc(var(--f) * .55), #000000eb calc(var(--f) * .82), #000 var(--f), #000 calc(100% - var(--f)), #000000eb calc(100% - var(--f) * .82), #00000080 calc(100% - var(--f) * .55), #00000014 calc(100% - var(--f) * .25), transparent;-webkit-mask-image:linear-gradient(90deg, var(--ramp));-webkit-mask-image:linear-gradient(90deg, var(--ramp));mask-image:linear-gradient(90deg, var(--ramp))}.poster-face-inner{background:var(--paper);--ramp:transparent, #00000014 calc(var(--f) * .25), #00000080 calc(var(--f) * .55), #000000eb calc(var(--f) * .82), #000 var(--f), #000 calc(100% - var(--f)), #000000eb calc(100% - var(--f) * .82), #00000080 calc(100% - var(--f) * .55), #00000014 calc(100% - var(--f) * .25), transparent;-webkit-mask-image:linear-gradient(var(--ramp));-webkit-mask-image:linear-gradient(var(--ramp));mask-image:linear-gradient(var(--ramp))}.poster-art{position:absolute;inset:0}.poster-blur{pointer-events:none;height:52%;position:absolute;inset:0 0 auto}.poster-blur>i{-webkit-backdrop-filter:blur(var(--b));-webkit-mask-image:linear-gradient(to top, var(--m));-webkit-mask-image:linear-gradient(to top, var(--m));mask-image:linear-gradient(to top, var(--m));position:absolute;inset:0}.poster-blur>i:first-child{--b:1px;--m:transparent 0%, #000 20%, #000 40%, transparent 60%}.poster-blur>i:nth-child(2){--b:2px;--m:transparent 20%, #000 40%, #000 60%, transparent 80%}.poster-blur>i:nth-child(3){--b:4px;--m:transparent 40%, #000 60%}.poster-blur>i:nth-child(4){--b:8px;--m:transparent 60%, #000 80%}.poster-blur>i:nth-child(5){--b:16px;--m:transparent 80%, #000 100%}.poster-blur:after{content:"";background:linear-gradient(var(--veil-1), var(--veil-2) 60%, transparent);position:absolute;inset:0}.poster-cap{z-index:1;text-align:center;transition:transform .9s var(--ease);padding-inline:9%;position:absolute;top:9%;left:0;right:0}.poster-title{-webkit-line-clamp:2;line-clamp:2;letter-spacing:-.01em;text-wrap:balance;-webkit-box-orient:vertical;font-size:1.05rem;font-weight:500;line-height:1.25;display:-webkit-box;overflow:hidden}.poster-kind{white-space:nowrap;text-overflow:ellipsis;margin-top:.3rem;display:block;overflow:hidden}.poster-more{z-index:1;width:calc(var(--h) * var(--poster-open) - 192px);opacity:0;transition:opacity .3s ease, transform .6s var(--ease);justify-content:space-between;align-items:flex-end;gap:2rem;display:flex;position:absolute;bottom:96px;left:96px;transform:translateY(10px)}.poster-more p{background:var(--paper);-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;max-width:24ch;padding:.6rem .8rem;font-size:.9rem;line-height:1.45;display:-webkit-box;overflow:hidden}.poster-more .meta{background:var(--paper);color:var(--ink);white-space:nowrap;margin-left:auto;padding:.5rem .8rem}@media (width>=900px){.poster-track{--h:min(56vh, 30rem);gap:min(5.5vw,4.4rem)}}@media (hover:hover) and (width>=900px){.poster:hover,.poster:focus-visible{width:calc(var(--h) * var(--poster-open));box-shadow:0 2px 4px #0000,0 34px 60px -22px #0000}.poster:focus-visible{outline-offset:-1px}.poster:hover .poster-face,.poster:focus-visible .poster-face,.poster:hover .poster-face-inner,.poster:focus-visible .poster-face-inner{--f:80px}.poster:hover .poster-cap,.poster:focus-visible .poster-cap{transform:translateY(40px)}.poster:hover .poster-more,.poster:focus-visible .poster-more{opacity:1;transition-delay:.35s;transform:none}}@media (width>=900px){html.motion .statement{height:230vh;padding-block:0}html.motion .statement-pin{align-items:center;height:100vh;position:sticky;top:0}html.motion .statement .word{opacity:clamp(.14, calc((var(--p) * 1.15 - var(--w)) * 14 + .14), 1)}html.motion .work{height:340vh;padding-block:0}html.motion .work[data-fits],html.motion .work:not(:has(.poster-track)){height:100vh}html.motion .work-pin{height:100vh;padding-top:var(--header-h);justify-content:center;gap:clamp(1.25rem,4vh,2.5rem);position:sticky;top:0;overflow:clip}html.motion .poster-track{--h:min(52vh, 30rem);scroll-snap-type:none;will-change:transform;flex:none;width:max-content;padding-block:0;position:relative;overflow:visible}html.motion .work-foot{margin-top:clamp(1rem,3vh,2rem)}html.motion .work-shelf span{transform:scaleX(calc(var(--share) + (1 - var(--share)) * var(--p)));animation:none}html.motion .work-count{display:block}html.motion .work[data-fits] .work-count{display:none}}.writing{row-gap:2.5rem;padding-block:26vh 20vh}.writing-head{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;display:flex}.writing-head a:hover{color:var(--ink)}.writing-list{grid-column:1/-1}.post-index{padding-bottom:var(--section)}.post-row{border-top:1px solid var(--line);grid-template-columns:7rem minmax(0,1fr);align-items:baseline;column-gap:1.5rem;padding-block:1.6rem;display:grid}.post-row-title{letter-spacing:-.01em;transition:transform .6s var(--ease);font-size:clamp(1.15rem,1.6vw,1.5rem);font-weight:400;line-height:1.25}.post-row-excerpt{color:var(--muted);font-size:var(--text-sm);grid-column:2;max-width:56ch;margin-top:.5rem}.post-row:hover .post-row-title{transform:translate(.5rem)}.closing{text-align:center;flex-direction:column;align-items:center;padding-block:24vh 30vh;display:flex}.closing h2{letter-spacing:-.035em;max-width:12ch;font-size:clamp(2.4rem,6.4vw,6.5rem);font-weight:500;line-height:1.02}.closing-text{max-width:46ch;color:var(--muted);font-size:var(--text-lg);margin-top:2rem;line-height:1.5}.closing-actions{margin-top:2.75rem}.button{background:var(--ink);color:var(--bg);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:1.1rem 1.75rem;font-size:.78rem;font-weight:600;line-height:1;transition:background-color .3s;display:inline-block}.button:hover{background:var(--accent)}.button:focus-visible{outline-offset:3px}.page-head{padding-top:24vh;padding-bottom:8vh}.page-head-label{flex-wrap:wrap;gap:.4rem 1.5rem;display:flex}.page-head-label a:hover{color:var(--ink)}.page-title{font-size:var(--text-2xl);letter-spacing:-.04em;max-width:20ch;margin-top:1.5rem;font-weight:600}.page-title.cutout{width:max-content;max-width:none}.page-intro{font-size:var(--text-lg);color:var(--muted);max-width:44ch;margin-top:1.75rem;line-height:1.45}.tags{flex-wrap:wrap;gap:.75rem 1.75rem;margin-top:4rem;display:flex}.tags a{border-bottom:1px solid #0000;padding-bottom:.2rem;transition:color .3s,border-color .3s}.tags a:hover,.tags a[aria-current=true]{color:var(--ink)}.tags a[aria-current=true]{border-bottom-color:var(--ink)}.z-list{padding-bottom:20vh}.z-row{align-items:center;padding-block:7vh}.z-poster{aspect-ratio:16/10;background:var(--paper);box-shadow:var(--poster-shadow);transition:transform .7s var(--ease);grid-area:1/1/auto/8;display:block;position:relative;overflow:hidden}.z-poster:hover{transform:translateY(-8px)}.z-info{grid-area:1/9/auto/13}.z-row:nth-child(2n) .z-poster{grid-column:6/13}.z-row:nth-child(2n) .z-info{grid-column:1/5}.z-info h2{overflow-wrap:anywhere;margin-block:.9rem 1rem;font-size:clamp(1.8rem,3vw,2.8rem);font-weight:600;line-height:1.05}.z-info p{max-width:34ch}.z-info dl{border-top:1px solid var(--line);grid-template-columns:5rem minmax(0,1fr);row-gap:.45rem;margin-block:1.75rem;padding-top:1.25rem;font-size:.9rem;display:grid}.z-info dt{color:var(--muted)}.z-go{font-weight:500}.project-facts{border-top:1px solid var(--line);font-size:var(--text-sm);grid-template-columns:repeat(4,minmax(0,1fr));column-gap:clamp(1rem,2.2vw,2rem);margin-bottom:8vh;display:grid}.project-facts>div{border-bottom:1px solid var(--line);padding-block:1.25rem}.project-facts dt{margin-bottom:.35rem}.project-links{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.project-cover{margin-bottom:clamp(4rem,9vw,8rem)}.project-cover .frame{--ratio:16 / 9;box-shadow:var(--poster-shadow)}.project-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2.2vw,2rem);margin-top:clamp(4rem,9vw,8rem);display:grid}.project-gallery figcaption{font-size:var(--text-sm);color:var(--muted);margin-top:.6rem}.article{padding-bottom:var(--section)}.article-col{min-width:0}.article-tags{flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:2rem;display:flex}.article-tags a:hover{color:var(--ink)}.article-end{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:clamp(5rem,10vw,9rem);display:grid}.article-end a{gap:.5rem;padding-block:2rem 2.5rem;display:grid}.article-end a+a,.article-end .next{text-align:right}.article-end .next{grid-column:2}.article-end strong{letter-spacing:-.02em;font-weight:500;font-size:var(--text-lg);line-height:1.25}.article-end a:hover strong{color:var(--accent)}.about-lead{font-size:var(--text-statement);letter-spacing:-.02em;grid-column:1/-1;font-weight:400;line-height:1.22}.about-body{padding-bottom:var(--section);row-gap:3rem;margin-top:clamp(4rem,9vw,8rem)}.about-body .prose{grid-column:1/-1}.prose{font-size:1.125rem;line-height:1.75}.prose>*+*{margin-top:1.5em}.prose h2,.prose h3,.prose h4{scroll-margin-top:calc(var(--header-h) + 1.5rem);margin-top:2.6em}.prose h2{font-size:var(--text-xl)}.prose h3{font-size:var(--text-lg)}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.9em}.prose a{color:var(--accent);text-underline-offset:.22em;text-decoration:underline;text-decoration-thickness:1px;transition:color .3s}.prose a:hover{color:var(--ink)}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:1.4em}.prose ul{list-style:none}.prose ul>li{position:relative}.prose ul>li:before{content:"";background:var(--muted);width:.55em;height:1px;position:absolute;top:.82em;left:-1.25em}.prose ol{list-style:decimal}.prose ol>li::marker{font-family:var(--font-mono-stack);color:var(--muted);font-size:.8em}.prose li+li{margin-top:.45em}.prose blockquote{border-left:1px solid var(--fog);font-size:var(--text-lg);letter-spacing:-.02em;margin-block:2.4em;padding-left:1.5rem;font-weight:500;line-height:1.45}.prose hr{background:var(--line);border:0;height:1px;margin-block:3em}.prose img{width:100%}.prose figcaption{font-size:var(--text-sm);color:var(--muted);margin-top:.6rem}.prose :not(pre)>code{font-family:var(--font-mono-stack);background:var(--surface);padding:.12em .36em;font-size:.86em}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);padding:.7rem 1rem .7rem 0}.code{background:color-mix(in srgb, var(--paper) 88%, transparent);border-left:1px solid var(--fog);margin-block:2.4em}.code-bar{border-bottom:1px solid var(--line);min-height:2.5rem;font-family:var(--font-mono-stack);font-size:var(--text-xs);letter-spacing:.04em;color:var(--muted);justify-content:space-between;align-items:center;gap:1rem;margin-top:0;padding:0 .5rem 0 1.25rem;display:flex}.code-copy{font-family:inherit;font-size:inherit;letter-spacing:inherit;color:var(--muted);padding:.45rem .75rem;transition:color .3s}.code-copy:hover,.code-copy[data-copied]{color:var(--ink)}.code-copy:active{transform:translateY(1px)}.code-body pre{overscroll-behavior-x:contain;font-family:var(--font-mono-stack);tab-size:2;color:var(--code-foreground);margin:0;padding:1.25rem;font-size:.875rem;line-height:1.7;overflow-x:auto;background:0 0!important}.code-body code{font-family:inherit}.code-body pre:focus-visible{outline-offset:-2px}.empty{padding-block:3rem var(--section);max-width:44ch}.empty h2{font-size:var(--text-xl);margin-bottom:.75rem}.empty p{color:var(--muted);margin-bottom:1.5rem}.pager{padding-bottom:var(--section);font-size:var(--text-sm)}.notfound{min-height:100dvh}.notfound-body{padding-bottom:var(--section)}@media (width<=899.98px){.nav{gap:0}.nav a{letter-spacing:.08em;padding:.6rem .55rem;font-size:.68rem}html.js .nav{display:none}html.js .menu-btn{display:block}.bar{justify-content:space-between;padding-inline:1.25rem .5rem;display:flex}.cta{display:none}html.js .bar{padding-inline:.5rem}html.js .bar-end{display:contents}html.js .menu{display:flex}html.js .brand{position:absolute;left:50%;transform:translate(calc(.1em - 50%))}:root{--text-cutout:clamp(1.7rem, 8.4vw, 3.4rem)}.hero-label,.hero-year,.hero-rule,.hero-mark{left:50%}.hero-rule.a{height:21vh;top:19vh}.hero-rule.b{height:17vh;bottom:15vh}.hero-mark{top:calc(50% + 2.6rem)}.hero-name{margin-left:.1em;left:50%;right:auto;transform:translate(-50%,-50%)}.hero-side{margin-left:.11em;font-size:.85rem;top:calc(50% + 5rem);left:50%;transform:translate(-50%)}.hero-cue{display:none}.statement-text{font-size:clamp(1.45rem,6vw,2rem)}.writing{padding-block:12vh}.post-row{grid-template-columns:minmax(0,1fr);row-gap:.35rem;padding-block:1.25rem}.post-row-excerpt{grid-column:1;margin-top:0}.closing{padding-block:14vh 22vh}.page-head{padding-top:18vh;padding-bottom:5vh}.tags{margin-top:2.5rem}.z-row{padding-block:4vh;display:block}.z-info{margin-top:1.5rem}.project-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){:root{--header-h:5rem}.prose{font-size:1.0625rem}.code{margin-inline:calc(var(--gutter) * -1)}.project-gallery,.article-end{grid-template-columns:minmax(0,1fr)}.article-end .next{text-align:left;grid-column:1}.article-end a+a{text-align:left;border-top:1px solid var(--line)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}html.js [data-reveal]{opacity:1;transform:none}.progress{display:none}@view-transition{navigation:none}}
