.hero{--rail: calc(var(--pad-y) * 2 + 12px);--rail-edge: var(--pad);--rail-x: var(--pad);position:sticky;top:0;z-index:0;height:100vh;height:100svh;display:grid;grid-template-rows:auto auto 1fr auto;grid-template-columns:100%;background:var(--bg);color:var(--ink)}.nav{grid-row:1;position:relative;z-index:2}.intro{grid-row:2;position:relative;z-index:1;pointer-events:none}.intro>*{pointer-events:auto}.scene-wrap{grid-row:2 / 4}.hero>*{grid-column:1}.bar{grid-row:4;position:relative;z-index:1}.nav{padding:0 var(--rail-edge);min-height:var(--rail);box-sizing:border-box;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 24px;font-size:var(--fs-text);border-bottom:1px solid var(--ink)}.nav nav{display:flex;flex-wrap:wrap;gap:4px var(--rail-edge);justify-content:flex-end}.nav a{text-decoration:none;padding:9px 0}.nav nav a:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.nav-city{padding:10px 0}.nav--float{--rail: calc(var(--pad-y) * 2 + 12px);--rail-edge: var(--pad);position:fixed;top:0;left:0;right:0;z-index:60;background:var(--bg);color:var(--ink);transform:translateY(-101%);transition:transform .4s cubic-bezier(.22,.61,.36,1)}.nav--float.is-shown{transform:none}@media(prefers-reduced-motion:reduce){.nav--float{transition:none}}.logo{position:relative;display:inline-block;justify-self:start;font-size:var(--fs-lead);letter-spacing:var(--ls-nav)}.logo-en{transition:opacity .3s ease}.logo-zh{position:absolute;left:0;top:10px;white-space:nowrap;font-family:var(--zh);font-weight:500;line-height:1;opacity:0;transition:opacity .3s ease}.logo-dots{position:absolute;left:-50px;top:-24px;height:90px;overflow:visible;pointer-events:none;opacity:0;transition:opacity .22s ease}.logo.is-zh .logo-en{opacity:0}.logo.is-zh .logo-zh{opacity:1}.logo.is-moving .logo-en,.logo.is-moving .logo-zh{opacity:0}.logo.is-moving .logo-dots{opacity:1}.intro{padding:36px var(--rail-x) 0;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px 40px}.intro h1{margin:0;max-width:900px;font-family:var(--serif);font-weight:400;font-style:italic;font-size:clamp(56px,min(6.6vw,11.5svh),96px);line-height:1.02;letter-spacing:var(--ls-display)}.cursor{font-style:normal;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.roles .open{color:inherit;text-decoration:none}.roles .open:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.roles{margin:8px 0 0;font-size:var(--fs-text);line-height:1.75;min-width:240px;text-align:right}.roles>*{display:block}.roles.is-below{text-align:left}@media(max-width:720px){.roles{text-align:left}}.scene-wrap{min-height:0;position:relative;z-index:0}.scene{position:absolute;inset:0;width:100%;height:100%;display:block}.orb{cursor:var(--cur-link);outline:none}.orb:focus-visible .orb-ring{stroke-width:3}.orb-label{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-small);fill:var(--ink);stroke:none;text-anchor:middle;opacity:0;transition:opacity .45s ease;pointer-events:none}.orb:hover .orb-label,.orb:focus-visible .orb-label{opacity:.85}.trail-past{stroke:var(--mid);stroke-width:1.6;stroke-dasharray:.1 9;opacity:.8}.trail-next{stroke:var(--lt);stroke-width:1.4;stroke-dasharray:.1 14;opacity:.7}.trail-beyond{stroke:var(--lt);stroke-width:1.2;stroke-dasharray:.1 10;opacity:.45}.other-shore{cursor:help}.other-shore .halo{animation:halo 6s ease-in-out infinite alternate}#layers .bud-ring{animation:bud-ring 7s ease-in-out infinite}@keyframes bud-ring{0%,to{opacity:.1}50%{opacity:1}}#layers .bud-rays{stroke-dasharray:1 1;animation:ray var(--d) ease-in-out var(--dl) infinite}#bud-glow .glow{animation:bud-glow 4s ease-in-out infinite alternate}@keyframes bud-glow{0%{opacity:.04}to{opacity:.09}}@keyframes ray{0%,to{stroke-dashoffset:var(--lo);opacity:.1}50%{stroke-dashoffset:0;opacity:1}}@keyframes halo{0%{opacity:.45}to{opacity:1}}.wake{animation:wake 3.4s ease-in-out infinite}@keyframes wake{0%,to{opacity:.25}45%{opacity:.8}}.s-winter .cun{opacity:.14}.s-winter .moss{opacity:.2}.s-autumn .moss{opacity:.6}.s-summer .cun{opacity:.5}.leaf{transform-box:fill-box;transform-origin:center;animation:leaf var(--dur) linear var(--dl) infinite}@keyframes leaf{0%{transform:translate(0) rotate(0);opacity:0}8%{opacity:.9}50%{transform:translate(calc(var(--drift) * .45),calc(var(--fall) * .5)) rotate(180deg)}90%{opacity:.8}to{transform:translate(var(--drift),var(--fall)) rotate(400deg);opacity:0}}.drift{animation:drift var(--d) linear var(--dl) infinite}@keyframes drift{0%{transform:translate(var(--from))}to{transform:translate(var(--to))}}.fall{animation:fall var(--d) linear var(--dl) infinite}@keyframes fall{0%{transform:translate(0)}to{transform:translate(var(--dx),700px)}}.snow-sway{animation:snow-sway var(--d) ease-in-out var(--dl) infinite alternate}@keyframes snow-sway{0%{transform:translate(calc(var(--sw) * -1))}to{transform:translate(var(--sw))}}#fog .mist{animation:mist var(--d) ease-in-out var(--dl) infinite alternate}@keyframes mist{0%{opacity:.55;transform:translateY(-6px)}to{opacity:1;transform:translateY(6px)}}.wx-in{animation:wx-in 2.5s ease-in-out both}.wx-out{animation:wx-out 2.5s ease-in-out both;pointer-events:none}@keyframes wx-in{0%{opacity:0}to{opacity:1}}@keyframes wx-out{0%{opacity:1}to{opacity:0}}#layers .snowcap{opacity:0;transition:opacity 4s ease-in-out}.heavy-snow #layers .snowcap{opacity:1}.hat{opacity:0;transition:opacity 2s ease-in-out}.wet .hat{opacity:1}.sun-halo{transform-box:fill-box;transform-origin:center;animation:sun-halo var(--d) linear var(--dl) infinite}@keyframes sun-halo{to{transform:rotate(var(--dir))}}.wave{animation:wave 4s ease-in-out var(--dl) infinite alternate}@keyframes wave{0%{transform:translate(-6px);opacity:.3}to{transform:translate(6px);opacity:.85}}.drop{transform-box:fill-box;transform-origin:center;animation:drop 2.4s ease-out var(--dl) infinite}@keyframes drop{0%{transform:scale(.1);opacity:0}12%{opacity:.9}to{transform:scale(1);opacity:0}}.ice .wl{stroke-dasharray:26 9 4 9;opacity:.6}.colophon{position:absolute;right:var(--pad);bottom:16px;display:flex;flex-direction:row-reverse;gap:12px;align-items:flex-start;pointer-events:none;font-size:var(--fs-note);line-height:1.8;color:var(--mu);text-align:right}.colophon-text{border-right:1px solid var(--mu);padding-right:12px}.sway{transform-box:fill-box;transform-origin:50% 100%;animation:sway var(--d) ease-in-out var(--dl) infinite alternate}@keyframes sway{0%{transform:rotate(var(--a0))}to{transform:rotate(var(--a1))}}.bend{transform-box:fill-box;transform-origin:50% 100%;animation:bend var(--d) ease-in-out var(--dl) infinite alternate}@keyframes bend{0%{transform:skew(var(--a0))}to{transform:skew(var(--a1))}}.bob{animation:bob var(--d) ease-in-out infinite alternate}.lantern-swing{transform-box:view-box;transform-origin:-40.6px -26px;animation:lantern-swing 3.6s ease-in-out infinite alternate}@keyframes lantern-swing{0%{transform:rotate(-5deg)}to{transform:rotate(4deg)}}.lantern-glow,.lantern-flame{display:none}:root.dark .lantern-glow,:root.dark .lantern-flame{display:inline}.lantern-glow{transform-box:fill-box;transform-origin:center;animation:lantern-glow 6s ease-in-out infinite}.lantern-flame{transform-box:fill-box;transform-origin:50% 100%;animation:lantern-flame 3.4s ease-in-out infinite}@keyframes lantern-glow{0%,to{opacity:.75;transform:scale(1)}18%{opacity:.5;transform:scale(.92)}34%{opacity:.9;transform:scale(1.05)}52%{opacity:.62;transform:scale(.96)}71%{opacity:1;transform:scale(1.08)}86%{opacity:.55;transform:scale(.94)}}@keyframes lantern-flame{0%,to{opacity:.85;transform:scale(1) skew(0)}20%{opacity:.55;transform:scale(.9,.8) skew(-8deg)}45%{opacity:1;transform:scale(1.05,1.15) skew(5deg)}70%{opacity:.7;transform:scale(.95,.9) skew(-4deg)}85%{opacity:.95;transform:scaleY(1.08) skew(6deg)}}@keyframes bob{0%{transform:translateY(calc(var(--b) * -1)) rotate(-.6deg)}to{transform:translateY(var(--b)) rotate(.8deg)}}.ripple{transform-box:fill-box;transform-origin:center;opacity:0;animation:ripple 2.6s cubic-bezier(.2,.6,.3,1) forwards}.ripple:nth-child(2){animation-delay:.28s}.ripple:nth-child(3){animation-delay:.56s}@keyframes ripple{0%{transform:scale(.06);opacity:0}8%{opacity:.95}to{transform:scale(1);opacity:0}}.cross{animation:cross var(--d) linear var(--dl) infinite}@keyframes cross{0%{transform:translate(1860px)}20%{transform:translate(1488px,calc(var(--bob) * -1))}40%{transform:translate(1116px)}60%{transform:translate(744px,var(--bob))}80%{transform:translate(372px)}92%,to{transform:translate(-60px,calc(var(--bob) * -.5))}}.fly-l{animation:fly-l 7s cubic-bezier(.35,.1,.6,1) forwards}@keyframes fly-l{0%{transform:translate(0);opacity:0}8%,82%{opacity:1}to{transform:translate(-780px,-180px);opacity:0}}.flap{transform-box:fill-box;transform-origin:50% 100%;animation:flap .38s ease-in-out infinite alternate}@keyframes flap{0%{transform:scaleY(1)}to{transform:scaleY(-.55)}}.boat-age{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-small);text-anchor:middle;dominant-baseline:hanging;fill:var(--ink);stroke:none;opacity:0;pointer-events:none;transition:opacity .6s ease}.show-age .boat-age,#boat:hover~.boat-age-g .boat-age,#boat:focus-within~.boat-age-g .boat-age{opacity:.6;animation:float-on 5.5s ease-in-out infinite}.boat-age{transform-box:fill-box;transform-origin:center}@keyframes float-on{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(-2px,2px) rotate(-2deg)}50%{transform:translate(1.5px,-1px) rotate(1.2deg)}75%{transform:translate(2.5px,1.5px) rotate(2deg)}}.ferryman{cursor:var(--cur-link);transform-box:fill-box;transform-origin:50% 100%;outline:none}.ferryman:focus-visible .hit{stroke:var(--ink);stroke-dasharray:2 3}.head{transform-origin:0 0}.head.nod{animation:nod .9s ease-in-out}.head.shake{animation:shake .9s ease-in-out}.arm{transform-origin:0 0}.wave-on{transform-origin:0 0;animation:wave-on 5s ease-in-out infinite}@keyframes wave-on{0%,56%,to{transform:rotate(20deg)}8%{transform:rotate(122deg)}16%{transform:rotate(150deg)}24%{transform:rotate(116deg)}32%{transform:rotate(150deg)}40%{transform:rotate(122deg)}}.arm.hello{animation:wave-hand 1.6s ease-in-out}@keyframes wave-hand{0%,to{transform:none}18%{transform:rotate(118deg)}32%{transform:rotate(146deg)}46%{transform:rotate(112deg)}60%{transform:rotate(146deg)}74%{transform:rotate(118deg)}}@keyframes nod{0%,to{transform:none}25%{transform:rotate(16deg)}50%{transform:rotate(0)}72%{transform:rotate(11deg)}}@keyframes shake{0%,to{transform:none}18%{transform:translate(-1px) rotate(-5deg)}40%{transform:translate(1px) rotate(5deg)}62%{transform:translate(-.7px) rotate(-3deg)}82%{transform:translate(.4px) rotate(2deg)}}.bar{padding:10px var(--rail-edge);min-height:var(--rail);box-sizing:border-box;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;align-content:center;gap:2px 24px;font-size:var(--fs-text);border-top:1px solid var(--ink)}@media(max-width:760px){.colophon{display:none}}@media(prefers-reduced-motion:reduce){.sway,.bend,.bob,.lantern-swing,.flap,.cursor,.leaf,.wave,.drop,.halo,.wake,.drift,.bud-ring,.bud-rays,.glow,.fall,.snow-sway,.mist,.sun-halo,.wave-on,.lantern-glow,.lantern-flame,.cross{animation:none}.leaf{opacity:0}.cross{display:none}}#layers .ridge{stroke-width:1.25}#layers .rock{stroke-width:1.45}#layers .contour{stroke-dasharray:.1 6;stroke-width:1.5}#layers .cun{stroke-dasharray:.1 3.6;stroke-width:1.45}#layers .rockin,#layers .axe{stroke-dasharray:.1 4;stroke-width:1.7}#layers .water{stroke-dasharray:.1 8;stroke-width:1.5}#layers .moss{stroke-width:2.2}#layers .horizon{stroke-width:.8;opacity:.75}.buddha-hit{cursor:var(--cur-link, pointer);outline:none}.buddha-hit:focus-visible{stroke:var(--ink)!important;stroke-width:1;stroke-dasharray:2 3}.teaching{--u: 0;--frame: var(--mid);position:absolute;z-index:5;width:max-content;max-width:min(320px,calc(100% - 48px));color:var(--ink);text-align:left;opacity:0;pointer-events:none;transition:--u .8s cubic-bezier(.6,0,.2,1),opacity .25s ease .6s}.teaching.is-on{--u: 1;opacity:1;pointer-events:auto;transition:opacity .2s ease,--u .8s cubic-bezier(.6,0,.2,1) .05s}.teaching-in{display:block;box-sizing:border-box;padding:9px 16px 8px;background:var(--bg);border-top:1px solid var(--frame);border-bottom:1px solid var(--frame);clip-path:inset(-2px calc((1 - var(--u)) * 50%))}.teaching p{margin:0}.teaching-zh{font-family:var(--zh);font-size:var(--fs-text);line-height:1.6;color:var(--mu);margin-top:4px!important}.teaching-en{font-family:var(--mono);font-size:var(--fs-text);line-height:1.75;color:var(--mu)}@media(prefers-reduced-motion:reduce){.teaching{transition:none}}@media(max-width:760px){.wx-more{display:none}}@media(max-width:760px){.intro h1{font-size:48px}.intro{row-gap:14px}}.nav nav a{text-transform:uppercase;letter-spacing:var(--ls-nav)}.sheets{position:relative;z-index:1;box-shadow:0 -24px 60px #0000002e}.paper,.ink-room{background:var(--bg);color:var(--ink)}.about-room{position:relative;overflow:hidden;isolation:isolate}.geese{position:absolute;pointer-events:none;overflow:visible;z-index:3}.geese-pass{animation:geese-pass 24s linear forwards}@keyframes geese-pass{0%{transform:translate(0);opacity:0}4%,92%{opacity:1}to{transform:translate(var(--run),var(--rise));opacity:0}}.paper,:root:not(.dark) .ink-room{--bg: #F2EFE6;--ink: #1A1916;--mu: #6E6A62;--mid: #8C877D;--lt: #B3AEA2;--rule: #CFC9BB}.ink-room,:root:not(.dark) .paper{--bg: #161511;--ink: #EFEADF;--mu: #A39E92;--mid: #B4AEA1;--lt: #7A756B;--rule: #2E2C29}.works{--step: clamp(40px, 5vw, 120px);padding:calc(2 * var(--step)) var(--pad)}.works-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;margin:0 0 var(--step)}.works-head p{margin:0}.works-head-r{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 32px}.vt{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-label);color:var(--mu)}.vt button{border:0;background:transparent;color:var(--mu);font:inherit;letter-spacing:var(--ls-small);padding:0 2px;cursor:var(--cur-link);text-underline-offset:5px;transition:color .3s ease}.vt button:hover{color:var(--ink)}.vt button{display:inline-flex;align-items:center;gap:7px}.vt button[aria-pressed=true]{color:var(--ink)}.vt-ic{overflow:visible}.vt-ic .vt-fill{fill:transparent;stroke:currentColor;stroke-width:1.1;transition:fill .3s ease}.vt-ic .vt-rays{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:1 2.4;opacity:0;transition:opacity .3s ease}.vt button[aria-pressed=true] .vt-fill{fill:currentColor}.vt button[aria-pressed=true] .vt-rays{opacity:1}.vt button:focus-visible{outline:1px solid currentColor;outline-offset:3px}.about{margin:0;font-family:var(--serif);font-size:clamp(28px,3vw,42px);line-height:1.3;text-align:right}.about--r{max-width:920px;margin:0 0 var(--step) auto}.about-row{display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px 72px;margin:0 0 var(--step)}.about-row .about{flex:0 1 920px}.cv{flex:1 1 260px;margin:6px 0 0;font-size:var(--fs-text);line-height:1.85;white-space:pre-line}.cv-block{display:flex;flex-direction:column;gap:28px}.cv-block .cv{flex:none}.awards{list-style:none;margin:0;padding:0;font-size:var(--fs-text);line-height:1.5;display:flex;flex-direction:column;gap:10px}.awards li{display:flex;flex-direction:column}.awards a{text-underline-offset:4px;text-decoration-thickness:1px}.view{animation:view-in .7s cubic-bezier(.22,.61,.36,1) both}@keyframes view-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}html:not([data-view=img]) .view--img,html[data-view=img] .view--txt{display:none}.stag{display:flex;flex-wrap:wrap;gap:96px 64px}.scol{flex:1 1 340px;min-width:0;display:flex;flex-direction:column;gap:112px}@media(min-width:761px){.scol2{padding-top:340px}.stag{gap:180px 140px}.scol{gap:220px}.card .ph,.card .cap{max-width:88%}}@media(min-width:761px){.stag:has(.cv-block) .scol2{padding-top:0}.stag:has(.cv-block) .scol:first-child{justify-content:space-between}}.card{display:flex;flex-direction:column;align-items:flex-start;gap:14px;text-decoration:none;color:var(--ink)}.card--end{align-items:flex-end}.vt-box{display:block}.ph{overflow:hidden;transition:opacity .6s ease}.ph img,.ph video{display:block;width:100%;height:auto;transform:scale(1);transform-origin:50% 100%;transition:transform 1.2s cubic-bezier(.22,.61,.36,1)}.card:hover .ph img,.card:hover .ph video,.card:focus-visible .ph img,.card:focus-visible .ph video{transform:scale(1.04)}.stag:hover .card .ph{opacity:.5}.stag:hover .card:hover .ph{opacity:1}.cap{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.cat{font-size:var(--fs-note);color:var(--mu)}.pt{display:inline-block;font-family:var(--serif);font-size:clamp(24px,2.2vw,34px);line-height:1.05;transition:transform .6s cubic-bezier(.22,.61,.36,1)}.pt.it{font-style:italic}.ix:hover .pt,.ix:focus-visible .pt,.card:hover .pt,.card:focus-visible .pt{font-style:italic}.ix:hover .pt.it,.ix:focus-visible .pt.it,.card:hover .pt.it,.card:focus-visible .pt.it{font-style:normal}.works--uniform .card .ph:not([style]),.works--uniform .card .cap:not([style]){width:82%}.works--uniform:not(#art) .ph img,.works--uniform:not(#art) .ph video,.works--uniform:not(#art) .ixp img,.works--uniform:not(#art) .ixp video{width:100%;height:auto}.ixp[style*=--s]{width:calc(var(--ixp-w, min(360px, 28.8vw)) * var(--s))}#art .ixl[style*=--ixp-cx] .ixp{left:var(--ixp-cx);right:auto;width:min(var(--ixp-free),calc(var(--ixp-k) * sqrt(var(--r, 1.5))));transform:translate(-50%,-50%)}#web .ixp{width:var(--ixp-w, min(562px, 45vw))}.card:focus-visible{outline:1px solid currentColor;outline-offset:6px}.can-drag .card{position:relative;pointer-events:none}.can-drag .card .ph,.can-drag .card .cap{pointer-events:auto;translate:var(--dx, 0px) var(--dy, 0px);cursor:grab;-webkit-user-drag:none;user-select:none}.can-drag .card img,.can-drag .card video{-webkit-user-drag:none}.can-drag .card.is-dragging .ph,.can-drag .card.is-dragging .cap{cursor:grabbing}.can-drag .card.is-tidying .ph,.can-drag .card.is-tidying .cap{transition:translate .9s cubic-bezier(.22,.61,.36,1)}.tidy{border:0;background:transparent;color:var(--mu);font:inherit;font-size:var(--fs-label);letter-spacing:var(--ls-small);padding:8px 2px;cursor:var(--cur-link);text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.tidy:hover{color:var(--ink)}html:not([data-view=img]) .tidy{display:none}.ixl{display:flex;flex-direction:column;border-bottom:1px solid var(--rule)}.ix{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:8px 28px;padding:21px 0;border-top:1px solid var(--rule);text-decoration:none;color:var(--ink);transition:opacity .5s ease,z-index 0s linear .8s}.ix:hover,.ix:focus-visible{z-index:3;transition:opacity .5s ease,z-index 0s}.ix .pt{font-size:clamp(32px,3.8vw,58px);line-height:1;letter-spacing:var(--ls-display)}.ixl:hover .ix{opacity:.38}.ixl:hover .ix:hover{opacity:1}.ix:hover .pt,.ix:focus-visible .pt{transform:translate(10px)}@property --u{syntax: "<number>"; inherits: true; initial-value: 0;}.ixp{--u: 0;position:absolute;left:var(--ixp-x, auto);right:var(--ixp-r, 24%);top:50%;width:var(--ixp-w, min(360px, 28.8vw));transform:translateY(-50%);opacity:0;pointer-events:none;z-index:2;transition:opacity .3s ease,--u .8s cubic-bezier(.6,0,.2,1)}.ixp{--frame: var(--mid)}.ixp-in{display:block;border-top:1px solid var(--frame);border-bottom:1px solid var(--frame);clip-path:inset(-2px calc((1 - var(--u)) * 50%))}.ixp img,.ixp video{display:block;width:100%;height:auto}.rod{position:absolute;top:-6px;bottom:-6px;left:calc((1 - var(--u)) * 50% - 7px);width:7px;border:1.2px solid var(--frame);border-radius:2px;box-sizing:border-box;background:var(--bg)}.rod-r{left:auto;right:calc((1 - var(--u)) * 50% - 7px)}.rod:before,.rod:after{content:"";position:absolute;left:-3.6px;width:12px;height:6px;border:1.2px solid var(--frame);border-radius:1.5px;box-sizing:border-box;background:var(--bg)}.rod:before{top:-6px}.rod:after{bottom:-6px}.ix:hover .ixp,.ix:focus-visible .ixp{opacity:1;--u: 1}.ix:focus-visible{outline:1px solid currentColor;outline-offset:4px}.ferry{padding:clamp(80px,10vw,240px) var(--pad) 0;border-top:1px solid var(--ink);display:flex;flex-wrap:wrap;gap:28px 72px}.ferry-main{flex:999 1 560px;display:flex;flex-direction:column;gap:18px}.ferry-main p{margin:0}.ferry-main>.caps:first-child{margin-bottom:38px}.bio{max-width:max(38.2%,min(100%,360px));margin:38px 0 12px;font-family:var(--serif);font-size:clamp(17px,1.4vw,21px);line-height:1.5;display:flex;flex-direction:column;gap:.8em}.ferry{--pw: clamp(176px, 17.6vw, 272px);--gx: clamp(64px, 9vw, 180px);--tw: min(46vw, 720px);--aw: calc(var(--pw) + var(--gx) + var(--tw))}.ferry .about-row{display:grid;grid-template-columns:var(--pw) minmax(0,1fr);width:min(100%,var(--aw));margin:clamp(128px,12vw,220px) auto 12px;gap:32px var(--gx);align-items:center}.ferry .about-row .about-photo{order:-1}.ferry-main .ferry-big{width:min(100%,var(--aw));margin-inline:auto;text-align:center}.ferry .about-row .bio{max-width:none;margin:0}.about-photo{--frame: var(--mid);margin:0;position:relative;width:var(--pw);justify-self:start}.about-photo .roller{display:block;position:relative;height:7px;margin:0 -7px;border:1.2px solid var(--frame);border-radius:2px;box-sizing:border-box;background:var(--bg);z-index:1}.about-photo .roller:before,.about-photo .roller:after{content:"";position:absolute;top:-3.6px;width:6px;height:12px;border:1.2px solid var(--frame);border-radius:1.5px;box-sizing:border-box;background:var(--bg)}.about-photo .roller:before{left:-6px}.about-photo .roller:after{right:-6px}.about-photo-clip{position:relative}.about-photo-clip:after{content:"";position:absolute;inset:0;border-left:1px solid var(--frame);border-right:1px solid var(--frame);pointer-events:none;z-index:2}.about-photo img{display:block;width:100%;height:auto}.about-photo-clip>div{position:relative;transform:scale(1.09);will-change:transform}.about-photo .dog{position:absolute;left:19%;top:76%;width:38%;height:24%;border-radius:50% 50% 0 0;cursor:var(--cur-link, pointer)}.about-photo .dog-tag{position:absolute;left:50%;bottom:100%;transform:translate(-50%,4px);padding:3px 8px;font-family:var(--mono);font-size:var(--fs-note);letter-spacing:var(--ls-small);white-space:nowrap;color:var(--bg);background:var(--ink);opacity:0;transition:opacity .35s ease,transform .35s ease;pointer-events:none}.about-photo .dog:hover .dog-tag,.about-photo .dog:focus-visible .dog-tag{opacity:1;transform:translate(-50%,-4px)}.about-photo .dog:focus-visible{outline:1px solid var(--ink);outline-offset:2px}.about-photo{transition:opacity .6s ease}.about-photo.is-waiting{opacity:0}.about-photo .about-photo-clip{clip-path:inset(0 0 0 0);transition:clip-path 1.8s cubic-bezier(.55,0,.2,1)}.about-photo .roller:last-child{transition:transform 1.8s cubic-bezier(.55,0,.2,1)}.about-photo.is-rolled .about-photo-clip{clip-path:inset(0 0 100% 0)}.about-photo.is-rolled .roller:last-child{transform:translateY(calc(-1 * var(--ph, 0px)))}.about-photo.is-waiting .about-photo-clip,.about-photo.is-waiting .roller:last-child{transition:none}.about-photo figcaption{margin-top:12px;font-family:var(--serif);font-style:italic;font-size:var(--fs-lead);color:var(--mu)}@media(max-width:760px){.ferry .about-row{grid-template-columns:1fr;align-items:start;row-gap:48px}.about-photo{justify-self:center;width:min(224px,56%)}}.say{font-family:var(--mono);font-size:.58em;color:var(--mu);letter-spacing:var(--ls-small);white-space:nowrap;vertical-align:.18em}.say-btn{display:inline-flex;align-items:center;justify-content:center;width:1.7em;height:1.7em;margin:0 .3em 0 .45em;padding:0;border:1px solid currentColor;border-radius:50%;background:none;color:inherit;cursor:var(--cur-link, pointer);vertical-align:-.5em;transition:color .3s ease}.say-btn svg path{fill:currentColor}.say-btn svg{margin-left:1px}.say-btn:hover,.say-btn:focus-visible,.say-btn.is-playing{color:var(--ink)}.say-btn.is-playing{animation:say-pulse 1s ease-in-out infinite}@keyframes say-pulse{50%{box-shadow:0 0 0 4px color-mix(in srgb,currentColor 18%,transparent)}}.facts{width:min(100%,var(--aw));margin:clamp(80px,9vw,160px) auto 0;display:flex;flex-direction:column;gap:clamp(32px,3vw,48px)}.facts-row{display:grid;grid-template-columns:var(--pw) minmax(0,1fr);column-gap:var(--gx);align-items:baseline}.facts dt{white-space:nowrap;font-size:var(--fs-label);letter-spacing:var(--ls-caps);text-transform:uppercase;color:color-mix(in srgb,var(--ink) 70%,var(--bg))}.facts dd{margin:0;font-family:var(--mono);font-size:var(--fs-text);line-height:1.75;color:color-mix(in srgb,var(--ink) 74%,var(--bg));-webkit-font-smoothing:auto}.facts-roles{container-type:inline-size}.facts-roles p{margin:0;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.7fr) 7.5em;column-gap:24px}@container (max-width: 600px){.facts-roles p{grid-template-columns:minmax(0,1fr) auto;margin-bottom:10px}.facts-roles p .facts-org{grid-area:1 / 1}.facts-roles p .facts-yr{grid-area:1 / 2}.facts-roles p span:nth-child(2){grid-area:2 / 1 / 3 / 3}.facts-roles p:last-child{margin-bottom:0}}.facts-org{color:var(--ink)}.facts a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);transition:color .3s ease}.facts a:hover,.facts a:focus-visible{color:var(--ink);text-decoration-color:currentColor}.facts-yr{text-align:right}.facts-note{display:block;opacity:.75}.facts-list ul{list-style:none;margin:0;padding:0}.facts-list li{display:inline-block;white-space:nowrap}.facts-list li:not(:last-child):after{content:"·";margin:0 .85em;opacity:.6}@media(max-width:760px){.facts-row{grid-template-columns:1fr;row-gap:10px}.facts-roles p{grid-template-columns:1fr auto}.facts-roles p span:nth-child(2){grid-column:1;grid-row:2}.facts-yr{grid-row:1 / span 2;grid-column:2}}.bio [lang=zh]{font-family:var(--zh);font-size:.92em}.ferry-big{font-family:var(--serif);font-size:clamp(44px,5.4vw,80px);line-height:1.02;letter-spacing:var(--ls-display)}.hi-wave{display:inline-block;height:.465em;width:auto;aspect-ratio:16 / 25;margin-left:.16em;vertical-align:-.02em;overflow:visible;fill:none;stroke:currentColor;stroke-width:.7;stroke-linecap:round;stroke-linejoin:round}.ferry-links{font-size:var(--fs-lead);font-family:var(--mono);line-height:1.6}.bio .ferry-links{margin-top:.6em}.ferry-links a{text-underline-offset:4px}.shore{position:relative;margin-top:clamp(80px,10vw,240px);height:clamp(170px,18vw,260px)}.home-sky-band{position:absolute;left:0;top:0;width:100%;height:900px;z-index:-1;pointer-events:none}.home-sky{stroke:var(--ink);fill:none;stroke-linecap:round;stroke-linejoin:round}.home-sky .twinkle{animation:star-twinkle 12s ease-in-out infinite}@keyframes star-twinkle{0%,55%,to{opacity:var(--o)}75%{opacity:calc(var(--o) * .25)}}@media(prefers-reduced-motion:reduce){.home-sky .twinkle{animation:none}}.home-line{position:absolute;left:var(--pad);top:0;margin:0;font-family:var(--mono);font-size:var(--fs-note);letter-spacing:var(--ls-small);line-height:1.6;color:var(--mu)}.home-line [lang=zh]{font-family:var(--zh);letter-spacing:0}.shore svg{width:100%;height:100%;display:block}.moored{transform-box:fill-box;transform-origin:50% 90%;animation:moored 14s ease-in-out infinite}@keyframes moored{0%{transform:translate(0) rotate(0)}20%{transform:translate(-5px,3px) rotate(-4deg)}45%{transform:translate(3px,-2px) rotate(2.5deg)}65%{transform:translate(7px,2.5px) rotate(4.5deg)}85%{transform:translate(1px,-2.5px) rotate(-2deg)}to{transform:translate(0) rotate(0)}}.moor-ripple{animation:moor-ripple 7s ease-in-out infinite alternate}.boat-mail{cursor:var(--cur-link, pointer)}.boat-hit{fill:transparent;stroke:none}.boat-note{font-family:var(--mono);font-size:var(--fs-note);letter-spacing:var(--ls-small);fill:var(--mu);stroke:none;opacity:0;transition:opacity .5s ease;pointer-events:none}.boat-mail:hover .boat-note{opacity:1}.boat-mail:hover .lantern-glow,.boat-mail:hover .lantern-flame{display:inline}@keyframes moor-ripple{0%{opacity:.25;transform:translate(-5px)}to{opacity:.85;transform:translate(5px)}}@media(prefers-reduced-motion:reduce){.moored,.moor-ripple{animation:none}}.foot{min-height:calc(var(--pad-y) * 2 + 12px);box-sizing:border-box;padding:0 var(--pad);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;font-size:var(--fs-text);border-top:1px solid var(--mu)}.foot a{text-decoration:none}@media(max-width:760px){.ixp{display:none}.about{text-align:left}.about--r{margin-left:0}.works-head{flex-direction:column;align-items:flex-start;row-gap:16px}}@media(prefers-reduced-motion:reduce){.view{animation:none}.ph img,.ph video,.pt{transition:none}.ixp{transition:opacity .2s ease}}@media(hover:none){.stag:hover .card .ph,.ixl:hover .ix{opacity:1}.ix:hover .pt,.ix:focus-visible .pt,.card:hover .pt,.card:focus-visible .pt{transform:none;font-style:normal}.ix:hover .pt.it,.ix:focus-visible .pt.it,.card:hover .pt.it,.card:focus-visible .pt.it{font-style:italic}}@media(max-width:760px){.ix .cat{display:none}}@media(max-width:760px){.shore{height:112px;overflow:hidden}.shore svg{position:absolute;left:0;bottom:0;height:170px}}.label-short{display:none}@media(max-width:760px){.label-full{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.label-short{display:inline}}@media(max-width:760px){.hi-lead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.hi-cap{text-transform:uppercase}}.ferry{--step: clamp(40px, 5vw, 120px)}.ferry-main{gap:0}.ferry .ferry-main>.caps:first-child{margin-bottom:var(--step)}.ferry .about-row{margin-top:var(--step);margin-bottom:0}.ferry .facts{margin-top:var(--step)}
