:root{--paper:#0b0d12;--ink:#eef1f7;--pink:#ff4fb8;--line:#303642;--muted:#a0a9b8}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;cursor:pointer}header{display:flex;align-items:center;justify-content:space-between;padding:26px 3.2vw;gap:20px;border-bottom:1px solid var(--line)}.brand{font-size:32px;font-weight:900;letter-spacing:-4px}.brand span{font-size:12px;vertical-align:top;letter-spacing:0;margin-left:6px}nav{display:flex;gap:30px;font-size:13px}nav a{padding:8px 0}nav a[aria-current]{border-bottom:2px solid var(--ink)}#language{border:0;font-size:12px;white-space:nowrap}#language span{color:var(--muted)}a:focus-visible,button:focus-visible{outline:2px solid var(--pink);outline-offset:6px}a:hover{color:var(--pink)}.hero{position:relative;min-height:760px;height:calc(100svh - 91px);padding:32px 3.2vw;overflow:hidden}.eyebrow,.mono{font:11px/1.5 monospace;text-transform:uppercase;letter-spacing:1px}.hero-top{display:flex;justify-content:space-between;position:relative;z-index:2}.status:before{content:' ';display:inline-block;background:var(--pink);width:7px;height:7px;border-radius:50%;margin-right:9px}.name{position:relative;z-index:2;margin:65px 0 0;font-size:clamp(80px,15.7vw,270px);line-height:.81;font-weight:900;letter-spacing:-.085em;pointer-events:none}.name span{display:block;width:max-content;position:relative;pointer-events:auto}.name span:last-child{margin-left:30.5vw}.name span:after{content:attr(data-text);position:absolute;inset:0;color:var(--pink);opacity:0;z-index:-1}.name span.glitch:after{opacity:.85;transform:translate(9px,-3px);clip-path:polygon(0 20%,100% 20%,100% 35%,0 35%,0 62%,100% 62%,100% 75%,0 75%)}.name span.glitch{transform:translateX(-2px)}canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.hero-bottom{position:absolute;bottom:35px;left:3.2vw;right:3.2vw;display:grid;grid-template-columns:1fr 1fr;align-items:end;z-index:4}.intro{font-size:clamp(21px,2.5vw,38px);line-height:1.2;max-width:500px;letter-spacing:-1px;margin:0 0 26px}.intro em{font-family:Georgia,serif;font-weight:normal}.circle-link{justify-self:end;border:1px solid var(--ink);border-radius:50%;width:124px;height:124px;display:flex;align-items:center;justify-content:center;gap:10px;font-size:12px;transform:rotate(-12deg)}.circle-link:hover{background:var(--pink);color:var(--paper)}.interaction-note{font:10px monospace;color:var(--muted)}.section{padding:72px 3.2vw}.section-head{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--ink);padding-top:20px;margin-bottom:45px}.section-head h2{font-size:40px;letter-spacing:-2px;margin:0;font-weight:500}.grid{display:grid;grid-template-columns:1fr 1fr;gap:65px 35px}.project:nth-child(even){margin-top:100px}.artwork{height:390px;position:relative;overflow:hidden;background:#ddd9d2;display:flex;align-items:center;justify-content:center}.artwork:before,.artwork:after{content:'';position:absolute}.artwork.v0{background:#262623}.v0:before{width:220px;height:220px;border-radius:50%;box-shadow:0 0 0 1px #999,0 0 0 28px #444,0 0 0 29px #aaa,0 0 0 70px #30302c;transform:skew(-20deg);background:#151515}.artwork.v1{background:#d1c8bc}.v1:before{width:140px;height:300px;background:linear-gradient(90deg,#928473,#f7efda,#b5a48c);transform:rotate(25deg);box-shadow:40px 20px 55px #6a625955}.artwork.v2{background:#cecac2}.v2:before{width:170px;height:190px;border:25px solid #7d7c70;border-radius:80px 20px 25px 20px;transform:rotate(-20deg)}.artwork.v3{background:#1d2223}.v3:before{width:260px;height:6px;background:#f7dfb3;transform:rotate(-35deg);box-shadow:0 0 25px #f7dfb3,0 60px 0 #f7dfb3,0 60px 25px #f7dfb3}.artwork.v4{background:#d8f06a}.v4:before{content:'Sure';font-size:110px;font-weight:900;letter-spacing:-10px;transform:rotate(-12deg)}.artwork.v5{background:#bcb0d1}.v5:before{content:'R';font-family:Georgia,serif;font-size:280px;transform:rotate(15deg)}.placeholder{position:absolute;bottom:18px;left:18px;color:#fff;background:#20201ed9;padding:6px 9px;font:9px monospace;letter-spacing:.8px}.project-title{display:flex;justify-content:space-between;align-items:baseline;margin-top:16px}.project h3{font-size:23px;font-weight:500;letter-spacing:-.7px;margin:0}.project small{font:10px monospace}.page-title{font-size:clamp(64px,9vw,150px);line-height:.94;letter-spacing:-.065em;font-weight:500;margin:0 0 35px}.page-intro{max-width:650px;font-size:22px;line-height:1.5;margin-bottom:60px}.detail .artwork{height:55vw;max-height:650px}.detail-grid{display:grid;grid-template-columns:1fr 2fr;gap:60px;margin:60px 0}.detail-grid h2{font-size:32px;font-weight:500;margin-top:0}.detail-grid p{line-height:1.7;color:var(--muted)}.back{display:inline-block;margin-bottom:45px;font:12px monospace}.empty{border-top:1px solid var(--line);padding:36px 0;display:grid;grid-template-columns:1fr 2fr;gap:40px}.empty h2{font-weight:500;font-size:28px;margin:0}.empty p{color:var(--muted);line-height:1.6;margin:0}.about-mark{font-size:150px;color:var(--pink);line-height:1}footer{border-top:1px solid var(--line);padding:30px 3.2vw;display:flex;justify-content:space-between;font:10px monospace}.motion-toggle{border:1px solid var(--line);padding:7px 10px;font:10px monospace;margin-top:15px}@media(min-width:1500px){.hero{min-height:900px}}@media(max-width:700px){header{padding:20px;flex-wrap:wrap}.brand{font-size:27px}nav{order:3;width:100%;gap:0;justify-content:space-between;font-size:11px}.hero{padding:25px 20px;height:calc(100svh - 115px);min-height:620px}.hero-top{font-size:9px}.name{margin-top:95px;font-size:19vw}.name span:last-child{margin-left:27vw;margin-top:15px}.hero-bottom{left:20px;right:20px;bottom:30px;grid-template-columns:1fr 85px;gap:15px}.intro{font-size:24px;letter-spacing:-.6px}.circle-link{width:85px;height:85px;font-size:10px}.interaction-note{max-width:210px;line-height:1.7}.section{padding:50px 20px}.grid{grid-template-columns:1fr;gap:35px}.project:nth-child(even){margin-top:0}.artwork{height:320px}.section-head h2{font-size:30px}.section-head .mono{max-width:90px;text-align:right;font-size:9px}.page-title{font-size:17vw}.page-intro{font-size:18px}.detail-grid,.empty{grid-template-columns:1fr;gap:15px}.detail .artwork{height:380px}footer{padding:25px 20px;font-size:8px;gap:10px}footer span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}.name span.glitch{transform:none}.name span.glitch:after{display:none}}

/* A dark digital canvas; quiet project pages retain their editorial layout. */
.hero{background:radial-gradient(ellipse at 80% 35%,#20233766,transparent 55%),var(--paper)}
.hero:before{content:'';position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(#c0d5ff05 1px,transparent 1px),linear-gradient(90deg,#c0d5ff05 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(to bottom,#000,transparent 80%)}
.status:before{box-shadow:0 0 12px #ff4fb877}
.intro em{font-family:inherit;font-style:normal;color:var(--pink)}
.motion-toggle:hover{border-color:var(--pink)}
.name.name-zh{font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:clamp(110px,19vw,300px);font-weight:800;letter-spacing:-.065em;line-height:1.1;margin-top:80px}
.name.name-zh span:last-child{margin-left:0}
.artwork.v4,.artwork.v5{color:#171a23}
@media(max-width:700px){.name.name-zh{font-size:27vw;margin-top:110px;letter-spacing:-.08em}.hero:before{background-size:48px 48px}}

/* Temporary symbol; personal identity will be developed with original work. */
.brand{display:flex;align-items:center;justify-content:center;width:44px;height:44px;letter-spacing:0}
.brand svg{width:38px;height:38px;display:block}
.name.name-zh{display:block;font-family:"Source Han Sans SC","Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif;font-size:clamp(110px,19vw,300px);font-weight:800;letter-spacing:-.065em;line-height:1.1;margin-top:80px}
.name.name-zh span{color:var(--ink);-webkit-text-stroke:0;margin:0!important;top:auto}
@media(max-width:700px){.brand{width:34px;height:34px}.brand svg{width:30px;height:30px}.name.name-zh{font-size:27vw;margin-top:110px;letter-spacing:-.08em}}
.actual-artwork img{width:100%;height:100%;object-fit:cover}.case-study{max-width:1600px;margin:auto}.case-kicker{color:var(--pink)}.case-title{font-size:clamp(62px,9vw,150px);font-weight:500;line-height:.93;letter-spacing:-.065em;margin:35px 0}.case-title span{color:var(--muted)}.case-deck{font-size:clamp(22px,2.7vw,40px);line-height:1.4;margin:35px 0 50px;letter-spacing:-.03em}.case-meta{display:grid;grid-template-columns:1fr 1.5fr 1fr;gap:30px;border-top:1px solid var(--line);padding:24px 0 40px}.case-meta small{font:10px monospace;letter-spacing:1px;color:var(--muted)}.case-meta p{font-size:14px;line-height:1.65;margin-bottom:0}.case-figure{margin:32px 0}.case-figure img{width:100%;height:auto;display:block;background:#161a21}.case-figure figcaption{font-size:11px;color:var(--muted);line-height:1.7;margin-top:12px}.case-cover{margin:0}.case-actions{display:flex;align-items:center;gap:25px;margin-top:30px}.case-actions>span{font-size:12px;color:var(--muted);line-height:1.6}.case-button{display:inline-flex;padding:15px 22px;border:1px solid var(--line);font-size:13px;white-space:nowrap}.case-button:hover{border-color:var(--pink)}.case-section{padding:70px 0;border-top:1px solid var(--line);margin-top:70px}.case-section+.case-section{margin-top:0}.case-label{color:var(--pink);margin-bottom:30px}.case-section h2{font-weight:500;font-size:clamp(30px,4vw,60px);letter-spacing:-.04em;line-height:1.15;margin:0 0 35px}.case-section h3{font-size:27px;font-weight:500}.case-prose{display:grid;grid-template-columns:1fr 1fr;gap:45px}.case-prose p,.case-copy,.case-split p{font-size:17px;line-height:1.85;color:#bdc5d2;margin:0 0 30px}.case-copy{max-width:850px}.case-split{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:start}.case-split .case-figure{margin-top:0}.case-portrait img{max-height:850px;object-fit:contain;background:#eceef0}.case-process{margin-top:55px}.interaction-rows>div{display:grid;grid-template-columns:1fr 2fr;gap:35px;border-top:1px solid var(--line);padding:25px 0}.interaction-rows b{font:12px monospace}.interaction-rows p{font-size:17px;color:#bdc5d2;line-height:1.8;margin:0}.emotion-gallery{display:grid;grid-template-columns:1fr 1fr;gap:35px}.emotion-gallery .case-figure{margin:0 0 25px}.emotion-gallery figcaption{display:flex;justify-content:space-between;gap:15px}.emotion-gallery b{color:var(--ink);font-weight:500}.case-next{border-top:1px solid var(--line);padding-top:35px;display:flex;justify-content:space-between;align-items:center;gap:20px}.case-next>span:last-child{font-size:clamp(24px,4vw,56px);letter-spacing:-.04em}
@media(max-width:700px){.case-meta,.case-prose,.case-split{grid-template-columns:1fr;gap:20px}.case-title{font-size:15vw}.case-meta{gap:10px;padding-bottom:30px}.case-meta p{margin-top:6px}.case-section{padding:45px 0;margin-top:45px}.case-section h2{font-size:34px}.case-prose p,.case-copy,.case-split p,.interaction-rows p{font-size:16px}.case-actions{flex-direction:column;align-items:flex-start;gap:15px}.interaction-rows>div{grid-template-columns:1fr;gap:12px}.emotion-gallery{grid-template-columns:1fr;gap:10px}.case-next{align-items:flex-start;flex-direction:column}.case-portrait img{max-height:900px}.case-figure{margin:24px 0}}
.flood-case{--accent:#74b3ff}.flood-case .case-kicker,.flood-case .case-label{color:var(--accent)}.flood-case .case-button:hover{border-color:var(--accent);color:var(--accent)}.flood-case .case-title{font-size:clamp(60px,10vw,160px)}.flood-showcase{background:radial-gradient(ellipse at 50% 20%,#d2e8fc,#eef4fc 65%);display:grid;grid-template-columns:repeat(3,1fr);gap:6%;padding:55px 8% 35px;border-radius:3px}.flood-screen{margin:0;min-width:0}.flood-screen img{width:100%;display:block;height:auto;border:1px solid #cad6e5;border-radius:7px}.flood-screen figcaption{font-size:11px;line-height:1.6;margin-top:13px;color:var(--muted)}.flood-showcase .flood-screen figcaption{color:#455365}.flood-caption{font-size:11px;line-height:1.7;color:var(--muted);max-width:850px}.flood-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:25px;margin:32px 0}.flood-gallery.three{grid-template-columns:repeat(3,1fr)}.flood-questions{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin:35px 0}.flood-questions>div{border-top:1px solid var(--line);padding-top:22px}.flood-questions b{color:var(--accent);font:11px monospace}.flood-questions p{font-size:22px;line-height:1.5;letter-spacing:-.03em}.flood-path{padding:25px 0;border-top:1px solid var(--line)}.flood-path>span{font:11px monospace;color:var(--accent)}.flood-path ol{list-style:none;padding:0;display:flex;gap:15px;margin:20px 0;flex-wrap:wrap}.flood-path li{font-size:15px;line-height:1.7}.flood-path li+li:before{content:'→';margin-right:15px;color:var(--muted)}.flood-feature{padding:35px 0}.flood-feature>div:first-child{max-width:850px}.flood-feature p{font-size:17px;line-height:1.8;color:#bdc5d2}.flood-card{background:#dce9f8;padding:35px 12%;gap:20px;align-items:flex-start}.flood-card img{width:46%;max-height:330px;object-fit:contain;object-position:top;border-radius:5px}
@media(max-width:700px){.flood-case .case-title{font-size:15vw}.flood-showcase{padding:25px 15px;gap:10px}.flood-showcase .flood-screen figcaption{font-size:8px}.flood-questions{grid-template-columns:1fr;gap:15px}.flood-questions p{font-size:21px}.flood-gallery.three{grid-template-columns:1fr 1fr}.flood-gallery.three .flood-screen:last-child{grid-column:1 / -1;max-width:65%;margin:15px auto}.flood-gallery{gap:15px}.flood-screen figcaption{font-size:10px}.flood-card{padding:25px 10%;gap:15px}.flood-card img{max-height:275px}.flood-feature p{font-size:16px}}
.flood-screen a,.flood-case .case-figure>a{display:block;cursor:zoom-in}.flood-screen a:hover img{outline:1px solid var(--accent)}
.frame-cover{background:#11151d;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:28px;border:1px solid var(--line)}.frame-cover-title{font-size:clamp(32px,5vw,75px);line-height:1;letter-spacing:-.05em;color:#969eae}.frame-cover small{font:10px monospace;color:var(--muted)}.asset-slot{min-height:260px;background:#11151a;border:1px dashed #414754;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--muted);padding:25px;text-align:center}.asset-slot.wide{min-height:380px}.slot-cross{font-size:34px;font-weight:200;color:#586275}.asset-slot small{font-size:11px}.frame-outline{display:flex;flex-wrap:wrap;gap:20px;align-items:center;border-bottom:1px solid var(--line);padding:28px 0;font-size:12px}.frame-outline>span{margin-right:auto;color:var(--muted)}.frame-note{color:var(--muted);font-size:15px;line-height:1.8;margin-bottom:30px}.frame-gallery{display:grid;grid-template-columns:1fr 1fr;gap:25px}.frame-text-slot{border-left:2px solid var(--line);color:var(--muted);padding:20px 25px;min-height:100px;line-height:1.8;margin:25px 0}.frame-fields{display:grid;grid-template-columns:1fr 1fr;gap:30px}.frame-fields>div{border-top:1px solid var(--line);padding:20px 0;font-size:16px}.frame-fields span{display:block;margin-top:18px;color:var(--muted);font-size:13px}.art-frame-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin:35px 0 70px}.art-frame-grid .asset-slot:nth-child(2){min-height:400px}.art-frame-grid .asset-slot:last-child{grid-column:1/-1;min-height:220px}.about-layout{display:grid;grid-template-columns:1fr 1.3fr;gap:70px;align-items:start;margin:60px 0}.about-layout .asset-slot{min-height:430px}.about-layout h2{font-size:38px;letter-spacing:-.04em;font-weight:500;margin-top:0}.about-layout p{font-size:22px;line-height:1.6}.about-links{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin:65px 0}.about-links a{border-top:1px solid var(--line);padding:25px 0}.about-links .mono{color:var(--muted);font-size:10px}.about-links strong{display:block;margin-top:20px;font-size:22px;font-weight:500}.frame-case .case-section{scroll-margin-top:30px}
@media(max-width:700px){.frame-gallery,.frame-fields,.art-frame-grid,.about-layout,.about-links{grid-template-columns:1fr}.asset-slot.wide{min-height:250px}.frame-outline{gap:15px}.frame-outline>span{width:100%}.art-frame-grid .asset-slot:last-child{grid-column:auto}.art-frame-grid .asset-slot:nth-child(2){min-height:260px}.about-layout{gap:30px;margin:40px 0}.about-layout .asset-slot{min-height:280px}.about-layout h2{font-size:30px}.about-layout p{font-size:18px}.about-links{gap:10px;margin:40px 0}.frame-cover-title{font-size:50px}}
.case-video{display:block;width:100%;height:auto;background:#111;max-height:80vh}.retirement-case .case-kicker,.retirement-case .case-label{color:#c7cf86}.perpetua-case .case-kicker,.perpetua-case .case-label{color:#d9c59c}.perpetua-case .case-deck span{color:var(--muted);font-size:.7em}.perpetua-case .case-split .case-figure img{max-height:850px;object-fit:contain}.perpetua-case .emotion-gallery .case-figure img{max-height:780px;object-fit:contain;background:#111}.team-names{display:flex;flex-wrap:wrap;gap:15px 40px;border-top:1px solid var(--line);padding:25px 0;font-size:18px}.case-figure>a{cursor:zoom-in}.retirement-case #retirement-video{scroll-margin-top:30px}
.art-collection .section-head{margin-top:70px}.saltbush-collection .section-head h2{font-size:clamp(26px,4vw,55px);letter-spacing:-.045em}.art-intro{display:grid;grid-template-columns:1fr 1fr;gap:50px;max-width:1100px;margin:35px 0 60px}.art-intro p{font-size:17px;line-height:1.8;color:#bdc5d2;margin:0}.saltbush-figure{margin:45px 0 65px}.saltbush-figure a{display:block;cursor:zoom-in;background:#f7f7f7;padding:25px}.saltbush-figure img{display:block;width:100%;height:auto;max-width:1100px;margin:auto}.saltbush-figure figcaption{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:11px;line-height:1.8;margin-top:15px}.art-credit{border-top:1px solid var(--line);padding:28px 0 20px;max-width:900px}.art-credit p{font-size:15px;line-height:1.8;color:var(--muted)}
@media(max-width:700px){.art-intro{grid-template-columns:1fr;gap:20px;margin-bottom:35px}.art-intro p{font-size:16px}.saltbush-figure a{padding:8px}.saltbush-figure{margin:30px 0 45px}.saltbush-figure figcaption{flex-direction:column;gap:4px}.art-collection .section-head{margin-top:45px}}
.personal-sketchbook{margin-top:100px;border-top:1px solid var(--line);padding-top:42px}.sketch-grid{columns:3;column-gap:24px}.sketch-card{margin:0 0 32px;break-inside:avoid}.sketch-card button{display:block;padding:0;border:0;background:none;width:100%;cursor:zoom-in}.sketch-card img{display:block;width:100%;height:auto}.sketch-card figcaption{display:flex;justify-content:space-between;padding:14px 0;font-size:14px;color:var(--muted)}.sketch-card button:hover img{filter:brightness(1.08)}.sketch-card button:focus-visible{outline:2px solid var(--pink);outline-offset:5px}.sketch-dialog{box-sizing:border-box;width:min(1100px,96vw);max-height:94dvh;background:#10131a;color:#eef1f7;border:1px solid #343844;padding:20px}.sketch-dialog::backdrop{background:rgba(0,0,0,.88)}.sketch-toolbar,.sketch-caption{display:flex;align-items:center;justify-content:space-between;gap:16px}.sketch-dialog button{background:transparent;color:inherit;border:1px solid #444955;padding:12px;cursor:pointer}.sketch-stage{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 0}.sketch-stage img{min-width:0;max-width:calc(100% - 120px);max-height:70dvh;object-fit:contain}.sketch-caption{font-size:14px}.sketch-caption a{color:var(--pink)}@media(max-width:900px){.sketch-grid{columns:2}}@media(max-width:560px){.sketch-grid{columns:1}.personal-sketchbook{margin-top:60px}.sketch-dialog{padding:12px}.sketch-stage{gap:6px}.sketch-stage img{max-width:calc(100% - 80px);max-height:65dvh}.sketch-dialog button{padding:9px}.sketch-caption{font-size:12px}}
.sketch-wheel{position:relative;background:radial-gradient(ellipse at 50% 60%,#20203366,transparent 65%);padding:20px 0 24px;overflow:hidden}.wheel-heading{display:flex;justify-content:space-between;gap:20px;margin:0 0 24px;color:var(--muted)}.wheel-preview{position:relative;display:block;width:min(100%,640px);height:390px;margin:0 auto;padding:0;border:0;background:none;color:var(--pink);cursor:zoom-in}.wheel-preview img{width:100%;height:100%;object-fit:contain}.wheel-preview>span{position:absolute;right:0;bottom:0;background:#0b0d12dc;padding:10px;font-size:12px}.fan-viewport{height:330px;position:relative;touch-action:pan-y;cursor:grab;outline-offset:-4px}.fan-viewport:active{cursor:grabbing}.fan-orbit{position:absolute;left:50%;top:65px;width:0;height:0}.fan-card{position:absolute;width:clamp(130px,17vw,210px);height:230px;left:0;top:0;padding:8px;background:#171a22;border:1px solid #444651;color:#eef1f7;transform:translate(calc(-50% + var(--offset)*115px),calc(var(--distance)*var(--distance)*11px)) rotate(calc(var(--offset)*9deg));transform-origin:50% 140%;transition:transform .45s cubic-bezier(.2,.7,.2,1),border-color .2s,filter .2s;cursor:pointer;box-shadow:0 12px 30px #0007;filter:brightness(.68)}.fan-card img{display:block;width:100%;height:calc(100% - 25px);object-fit:contain;pointer-events:none}.fan-card span{display:block;text-align:left;font-size:11px;padding-top:6px;pointer-events:none}.fan-card.is-selected{border-color:var(--pink);filter:brightness(1);box-shadow:0 12px 40px #0009}.fan-card:hover{filter:brightness(1)}.fan-card:focus-visible,.wheel-preview:focus-visible,.wheel-controls button:focus-visible{outline:2px solid var(--pink);outline-offset:3px}.wheel-controls{position:relative;display:flex;align-items:center;justify-content:center;gap:28px;z-index:30;padding-top:20px}.wheel-controls p{font-size:12px;color:var(--muted);margin:0}.wheel-controls button{border:1px solid #444651;border-radius:50%;background:none;color:var(--ink,#eef1f7);width:44px;height:44px;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:560px){.wheel-heading{font-size:10px}.wheel-preview{height:320px}.fan-viewport{height:275px}.fan-orbit{top:50px}.fan-card{width:132px;height:185px;transform:translate(calc(-50% + var(--offset)*72px),calc(var(--distance)*var(--distance)*9px)) rotate(calc(var(--offset)*11deg))}.wheel-controls{gap:18px}.wheel-controls p{font-size:11px}.personal-sketchbook .section-head{gap:12px}.personal-sketchbook .section-head h2{font-size:26px}}@media(prefers-reduced-motion:reduce){.fan-card{transition:none}}
.fan-viewport{cursor:default;touch-action:pan-y;--spread:64px;--angle:5deg;--lift:30px}.fan-viewport:active{cursor:default}.fan-viewport:hover{--spread:115px;--angle:9deg;--lift:0px}.fan-card{padding:4px;width:clamp(120px,16vw,190px);height:225px;transform:translate(calc(-50% + var(--offset)*var(--spread)),calc(var(--lift) + var(--distance)*var(--distance)*9px)) rotate(calc(var(--offset)*var(--angle))) scale(.86);transition:transform .6s cubic-bezier(.22,1.18,.36,1),border-color .2s,filter .2s}.fan-card img{height:calc(100% - 18px)}.fan-card span{padding-top:3px;font-size:10px}.fan-card.is-selected{transform:translate(-50%,var(--lift)) rotate(0deg) scale(1.05)}.fan-card:focus-visible{filter:brightness(1)}@media(max-width:560px){.fan-viewport{--spread:46px;--angle:6deg;--lift:15px}.fan-viewport:hover{--spread:72px;--angle:11deg;--lift:0px}.fan-card{width:130px;height:180px}.wheel-controls p{max-width:170px;text-align:center}}@media(prefers-reduced-motion:reduce){.fan-card{transition:none}}@media(hover:none){.fan-viewport{--spread:60px;--lift:0px}.fan-card{touch-action:pan-y}}
.fan-viewport{--spread:76px;--angle:6deg;--lift:26px;--curve:3px}.fan-viewport:hover{--spread:115px;--angle:9deg;--lift:0px;--curve:7px}.fan-card{transform:translate(calc(-50% + var(--offset)*var(--spread)),calc(var(--lift) + var(--distance)*var(--distance)*var(--curve))) rotate(calc(var(--offset)*var(--angle))) scale(.95)}.fan-card.is-selected{transform:translate(-50%,var(--lift)) scale(1.05)}.wheel-preview{width:fit-content;max-width:calc(100% - 24px);padding:9px;border:1px solid #eef1f724;background:#eef1f703;box-sizing:content-box}.wheel-preview img{display:block;width:auto;max-width:100%;height:100%;object-fit:contain}.wheel-preview>span{right:8px;bottom:8px}@media(max-width:560px){.fan-viewport{--spread:52px;--angle:7deg;--lift:14px;--curve:2px}.fan-viewport:hover{--spread:72px;--angle:11deg;--lift:0px;--curve:4px}.wheel-preview{padding:6px}}@media(hover:none){.fan-viewport{--spread:60px;--lift:0px;--curve:3px}}
.bio-section{margin-top:72px}.bio-row{display:grid;grid-template-columns:240px 1fr;gap:36px;border-top:1px solid var(--line);padding:28px 0}.bio-row>.mono{font-size:12px;color:var(--muted);line-height:1.8}.bio-row h3,.bio-skills h3{font-size:22px;font-weight:500;margin:0 0 12px}.bio-row p,.bio-skills p{color:var(--muted);line-height:1.85;margin:0;max-width:780px}.bio-opportunity{color:var(--pink)!important}.bio-skills{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.bio-email{font-size:clamp(20px,3vw,42px);text-decoration:none;overflow-wrap:anywhere}.bio-contact-details{display:flex;flex-wrap:wrap;gap:24px;margin-top:24px;color:var(--muted)}.bio-contact-details a{color:inherit}.bio-contact a:hover{color:var(--pink)}@media(max-width:700px){.bio-row{grid-template-columns:1fr;gap:10px}.bio-skills{grid-template-columns:1fr;gap:28px}.bio-section{margin-top:50px}.bio-contact-details{gap:18px}.bio-row h3{font-size:20px}}
.project{display:block;cursor:pointer}.project-cover{position:relative;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}.project-cover::after{content:'';position:absolute;inset:0;z-index:2;border:2px solid transparent;pointer-events:none;transition:border-color .25s}.project-open{position:absolute;right:18px;bottom:18px;z-index:3;display:flex;gap:22px;align-items:center;background:var(--pink);color:var(--paper);padding:13px 17px;font-size:13px;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s}.project-open>span{font-size:20px}.project-title{transition:color .25s}.project:focus-visible .project-cover::after{border-color:var(--pink)}.project:focus-visible .project-open{opacity:1;transform:none}.project:focus-visible .project-title{color:var(--pink)}@media(hover:hover){.project:hover .project-cover{transform:translateY(-7px);box-shadow:0 15px 40px #ff4fb812}.project:hover .project-cover::after{border-color:var(--pink)}.project:hover .project-open{opacity:1;transform:none}.project:hover .project-title{color:var(--pink)}}@media(hover:none){.project-open{opacity:1;transform:none;padding:8px 12px;right:10px;bottom:10px;font-size:11px}.project-open>span{font-size:16px}}@media(prefers-reduced-motion:reduce){.project:hover .project-cover{transform:none}}
.project .refreshed-cover.cover-0{background:#9c3bba}.project .refreshed-cover.cover-0 img{object-fit:contain;width:100%;height:100%}.project .refreshed-cover.cover-1{background:#d9e5ed}.project .refreshed-cover.cover-1 img{object-fit:contain;width:86%;height:86%}.project .refreshed-cover.cover-2{background:#f4f2ee}.project .refreshed-cover.cover-2 img{object-fit:contain;width:100%;height:100%}
.project .refreshed-cover.cover-0{height:auto;aspect-ratio:16/9}.project .refreshed-cover.cover-2{height:auto;aspect-ratio:4/3}
.about-frame .about-layout h2,.about-frame .bio-section>.section-head h2,.about-frame .bio-skills h3{color:var(--pink)}.about-frame .bio-section>.section-head{border-top-color:#ff4fb855}.about-frame .bio-section>.section-head>.mono{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;border:1px solid #ff4fb855;border-radius:50%;color:var(--pink);font-size:11px}.about-frame .bio-location{display:inline-block;padding:7px 12px;border:1px solid #ff4fb840;border-radius:30px;background:#ff4fb809;color:#e0b5d0;font-size:11px;letter-spacing:.8px}.about-frame .bio-skills>div{padding:24px;border:1px solid #ff4fb81f;background:linear-gradient(145deg,#ff4fb809,transparent);border-radius:3px}.about-frame .bio-row>div{border-left:1px solid #ff4fb836;padding-left:24px}.about-frame .bio-row>.mono{color:#c5aabb}.about-frame .bio-contact{background:radial-gradient(ellipse at 100% 100%,#ff4fb80a,transparent 65%)}@media(max-width:700px){.about-frame .bio-row>div{padding-left:16px}.about-frame .bio-skills>div{padding:20px}}
@keyframes title-unfold{from{opacity:0;clip-path:inset(100% 0 0 0);transform:translateY(24px)}to{opacity:1;clip-path:inset(0 0 -12px 0);transform:translateY(0)}}@keyframes copy-enter{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}.entry-title{animation:title-unfold .8s cubic-bezier(.22,.7,.25,1) both}.entry-copy{animation:copy-enter .7s .18s ease-out both}.scroll-heading{opacity:0;clip-path:inset(100% 0 0 0);transform:translateY(18px);transition:opacity .65s ease-out,clip-path .75s cubic-bezier(.22,.7,.25,1),transform .75s cubic-bezier(.22,.7,.25,1)}.scroll-heading.is-revealed{opacity:1;clip-path:inset(0 0 -6px 0);transform:none}@media(prefers-reduced-motion:reduce){.entry-title,.entry-copy{animation:none}.scroll-heading{opacity:1;clip-path:none;transform:none;transition:none}}
.scroll-heading{clip-path:none}.scroll-heading.is-revealed{animation:title-unfold .75s cubic-bezier(.22,.7,.25,1) both}@media(prefers-reduced-motion:reduce){.scroll-heading.is-revealed{animation:none}}

@keyframes word-unfold{from{opacity:0;transform:perspective(600px) translateY(18px) rotateX(-65deg) scaleY(.7);filter:blur(1px)}to{opacity:1;transform:perspective(600px) translateY(0) rotateX(0) scaleY(1);filter:blur(0)}}.scroll-heading,.scroll-heading.is-revealed{opacity:1;transform:none;clip-path:none;transition:none;animation:none;perspective:600px}.scroll-word{display:inline-block;transform-origin:50% 100%;opacity:0;transform:translateY(18px) rotateX(-65deg) scaleY(.7)}.scroll-heading.is-revealed .scroll-word{animation:word-unfold .7s var(--reveal-delay,0ms) cubic-bezier(.2,.7,.2,1) both}@media(prefers-reduced-motion:reduce){.scroll-word{opacity:1;transform:none}.scroll-heading.is-revealed .scroll-word{animation:none}}
.art-collection .saltbush-collection>.section-head h2,.art-collection .personal-sketchbook>.section-head h2{color:var(--pink)}
.about-frame .bio-location{border-color:var(--ink);color:var(--ink);background:transparent}.about-frame .bio-skills>div{border-color:var(--ink);background:transparent}.about-frame .bio-skills h3,.about-frame .bio-skills p{color:var(--ink)}.about-frame .bio-row>.mono{color:var(--ink)}.about-frame .bio-row>div{border-left-color:var(--ink)}.about-frame .bio-section>.section-head{border-top-color:var(--ink)}.about-frame .bio-section>.section-head>.mono{border-color:var(--ink);color:var(--ink)}.about-frame .bio-contact{background:transparent}
.project .refreshed-cover{height:auto!important;aspect-ratio:1/1!important;isolation:isolate}.project .refreshed-cover .cover-main{position:relative;z-index:1}.project .refreshed-cover.cover-0{background:#692c8c}.project .refreshed-cover.cover-0 .cover-ambient{position:absolute;inset:-12%;width:124%;height:124%;object-fit:cover;filter:blur(38px) saturate(1.15);opacity:.75;z-index:0}.project .refreshed-cover.cover-0 .cover-main{width:94%;height:auto;object-fit:contain;box-shadow:0 14px 40px #35133e4d;border:1px solid #ffffff30}.cover-editorial{position:absolute;top:7%;left:7%;z-index:2;color:#15364a}.cover-editorial small{font:9px monospace;letter-spacing:1.4px}.cover-editorial strong{display:block;font-size:clamp(26px,3.7vw,64px);line-height:.95;letter-spacing:-.06em;margin-top:13px;font-weight:600}.project .refreshed-cover.cover-1{background:radial-gradient(ellipse at 80% 80%,#9db8ca55,transparent 65%),repeating-linear-gradient(0deg,#ffffff13 0 1px,transparent 1px 35px),#d9e5ed}.project .refreshed-cover.cover-1 .cover-main{width:72%;height:76%;margin-left:22%;margin-top:20%;object-fit:contain;mix-blend-mode:multiply}.project .refreshed-cover.cover-2{background:linear-gradient(135deg,#f4f2ee 60%,#e7e1d7)}.cover-2 .cover-editorial{color:#3e3b38}.cover-2 .cover-editorial strong{font-size:clamp(24px,3vw,54px)}.project .refreshed-cover.cover-2 .cover-main{width:95%;height:72%;margin-top:24%;object-fit:contain;mix-blend-mode:multiply}.contact-icon-row{display:flex;flex-wrap:wrap;gap:26px;margin:36px 0 10px}.contact-icon-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-width:104px;padding:18px;color:var(--ink);cursor:pointer;transition:color .2s,transform .25s}.contact-icon-link svg{width:52px;height:52px}.contact-icon-link span{font-size:12px;letter-spacing:.5px}.contact-icon-link:hover,.contact-icon-link:focus-visible{color:var(--pink);transform:translateY(-4px)}.contact-wechat{position:relative}.contact-wechat summary{list-style:none}.contact-wechat summary::-webkit-details-marker{display:none}.contact-wechat p{position:absolute;top:100%;left:50%;transform:translateX(-50%);white-space:nowrap;border:1px solid var(--line);padding:12px;background:var(--paper);font-size:13px;margin:0;z-index:2}@media(max-width:700px){.cover-editorial strong{font-size:38px}.cover-2 .cover-editorial strong{font-size:34px}.contact-icon-row{gap:10px;justify-content:space-between}.contact-icon-link{padding:12px 6px;min-width:64px}.contact-icon-link svg{width:38px;height:38px}.contact-icon-link span{font-size:11px}}@media(prefers-reduced-motion:reduce){.contact-icon-link:hover{transform:none}}

.project .integrated-cover{height:auto;aspect-ratio:1/1;background:var(--paper);isolation:isolate}.project .integrated-cover::before{display:none}.project .integrated-cover img{width:100%;height:100%;object-fit:cover}.project .integrated-0 img{position:absolute;max-width:none;width:249%;height:140%;left:-74.5%;top:-33%;object-fit:fill}.project .integrated-0::after{inset:0;background:radial-gradient(ellipse at center,transparent 42%,#0b0d1255 80%,#0b0d12b3 100%);pointer-events:none}.project .integrated-1{background:radial-gradient(ellipse at 50% 55%,#24333c 0%,#131b22 50%,#0b0d12 85%)}.project .integrated-1 img{width:88%;height:94%;object-fit:fill;clip-path:polygon(30% 2%,36% 3%,81% 15%,82% 19%,70% 39%,94% 39%,96% 42%,55% 98%,51% 100%,27% 97%,26% 94%,39% 77%,8% 68%,6% 64%,29% 4%);filter:brightness(.88) saturate(.8);transform:rotate(-4deg);}.project .integrated-2{background:radial-gradient(ellipse at 50% 60%,#272929 0%,#171a1c 52%,#0b0d12 90%)}.project .integrated-2 img{width:94%;height:94%;object-fit:contain;filter:brightness(.88) drop-shadow(0 18px 18px #0008)}

.project .integrated-1 img{clip-path:polygon(29.97% 2.82%,29.22% 3.18%,28.79% 3.53%,28.47% 3.88%,28.22% 4.24%,28.10% 4.59%,27.98% 4.94%,27.85% 5.29%,27.73% 5.65%,27.54% 6.00%,27.41% 6.35%,27.35% 6.71%,27.17% 7.06%,27.04% 7.41%,26.98% 7.76%,26.79% 8.12%,26.67% 8.47%,26.54% 8.82%,26.42% 9.18%,26.36% 9.53%,26.17% 9.88%,26.04% 10.24%,25.92% 10.59%,25.79% 10.94%,25.73% 11.29%,25.55% 11.65%,25.42% 12.00%,25.30% 12.35%,25.17% 12.71%,25.05% 13.06%,24.86% 13.41%,24.74% 13.76%,24.61% 14.12%,24.55% 14.47%,24.42% 14.82%,24.24% 15.18%,24.11% 15.53%,23.99% 15.88%,23.86% 16.24%,23.80% 16.59%,23.61% 16.94%,23.49% 17.29%,23.36% 17.65%,23.24% 18.00%,23.12% 18.35%,22.93% 18.71%,22.80% 19.06%,22.68% 19.41%,22.62% 19.76%,22.49% 20.12%,22.31% 20.47%,22.18% 20.82%,22.06% 21.18%,21.93% 21.53%,21.81% 21.88%,21.62% 22.24%,21.56% 22.59%,21.43% 22.94%,21.31% 23.29%,21.18% 23.65%,21.00% 24.00%,20.87% 24.35%,20.75% 24.71%,20.62% 25.06%,20.56% 25.41%,20.37% 25.76%,20.25% 26.12%,20.12% 26.47%,20.00% 26.82%,19.94% 27.18%,19.81% 27.53%,19.63% 27.88%,19.50% 28.24%,19.38% 28.59%,19.25% 28.94%,19.13% 29.29%,18.94% 29.65%,18.88% 30.00%,18.75% 30.35%,18.63% 30.71%,18.50% 31.06%,18.38% 31.41%,18.26% 31.76%,18.07% 32.12%,17.94% 32.47%,17.82% 32.82%,17.76% 33.18%,17.63% 33.53%,17.45% 33.88%,17.32% 34.24%,17.20% 34.59%,17.07% 34.94%,16.95% 35.29%,16.76% 35.65%,16.70% 36.00%,16.57% 36.35%,16.45% 36.71%,16.39% 37.06%,16.20% 37.41%,16.07% 37.76%,15.95% 38.12%,15.83% 38.47%,15.70% 38.82%,15.51% 39.18%,15.39% 39.53%,15.33% 39.88%,15.20% 40.24%,15.08% 40.59%,14.89% 40.94%,14.77% 41.29%,14.64% 41.65%,14.52% 42.00%,14.39% 42.35%,14.21% 42.71%,14.14% 43.06%,14.02% 43.41%,13.89% 43.76%,13.77% 44.12%,13.58% 44.47%,13.46% 44.82%,13.33% 45.18%,13.21% 45.53%,13.08% 45.88%,12.90% 46.24%,12.83% 46.59%,12.71% 46.94%,12.59% 47.29%,12.46% 47.65%,12.27% 48.00%,12.21% 48.35%,12.02% 48.71%,11.96% 49.06%,11.84% 49.41%,11.65% 49.76%,11.53% 50.12%,11.40% 50.47%,11.34% 50.82%,11.21% 51.18%,10.97% 51.53%,10.90% 51.88%,10.78% 52.24%,10.65% 52.59%,10.53% 52.94%,10.40% 53.29%,10.34% 53.65%,10.16% 54.00%,10.03% 54.35%,9.91% 54.71%,9.78% 55.06%,9.66% 55.41%,9.53% 55.76%,9.35% 56.12%,9.28% 56.47%,9.10% 56.82%,9.03% 57.18%,8.85% 57.53%,8.72% 57.88%,8.60% 58.24%,8.47% 58.59%,8.41% 58.94%,8.22% 59.29%,8.10% 59.65%,7.98% 60.00%,7.85% 60.35%,7.73% 60.71%,7.60% 61.06%,7.41% 61.41%,7.29% 61.76%,7.17% 62.12%,7.10% 62.47%,6.92% 62.82%,6.79% 63.18%,6.67% 63.53%,6.54% 63.88%,6.48% 64.24%,6.42% 64.59%,6.36% 64.94%,6.42% 65.29%,6.54% 65.65%,6.67% 66.00%,6.85% 66.35%,7.17% 66.71%,7.54% 67.06%,7.98% 67.41%,8.91% 67.76%,11.03% 68.12%,11.71% 68.47%,13.02% 68.82%,14.33% 69.18%,15.51% 69.53%,16.88% 69.88%,18.32% 70.24%,19.63% 70.59%,20.87% 70.94%,22.37% 71.29%,23.61% 71.65%,24.98% 72.00%,26.23% 72.35%,27.60% 72.71%,28.85% 73.06%,30.34% 73.41%,31.59% 73.76%,32.90% 74.12%,34.33% 74.47%,35.51% 74.82%,37.01% 75.18%,38.26% 75.53%,38.75% 75.88%,38.50% 76.24%,38.26% 76.59%,38.07% 76.94%,37.82% 77.29%,37.63% 77.65%,37.38% 78.00%,37.20% 78.35%,36.95% 78.71%,36.70% 79.06%,36.51% 79.41%,36.32% 79.76%,36.07% 80.12%,35.89% 80.47%,35.64% 80.82%,35.39% 81.18%,35.20% 81.53%,34.95% 81.88%,34.83% 82.24%,34.52% 82.59%,34.33% 82.94%,34.08% 83.29%,33.83% 83.65%,33.64% 84.00%,33.40% 84.35%,33.21% 84.71%,32.96% 85.06%,32.71% 85.41%,32.52% 85.76%,32.27% 86.12%,32.09% 86.47%,31.84% 86.82%,31.65% 87.18%,31.40% 87.53%,31.15% 87.88%,30.97% 88.24%,30.72% 88.59%,30.53% 88.94%,30.34% 89.29%,30.03% 89.65%,29.84% 90.00%,29.60% 90.35%,29.41% 90.71%,29.16% 91.06%,28.97% 91.41%,28.72% 91.76%,28.47% 92.12%,28.29% 92.47%,28.04% 92.82%,27.85% 93.18%,27.66% 93.53%,27.54% 93.88%,27.48% 94.24%,27.48% 94.59%,27.48% 94.94%,27.79% 95.29%,28.22% 95.65%,28.66% 96.00%,31.65% 96.35%,34.89% 96.71%,39.00% 97.06%,43.12% 97.41%,47.41% 97.76%,51.78% 98.12%,56.51% 98.47%,58.38% 98.47%,59.00% 98.12%,59.56% 97.76%,59.94% 97.41%,60.37% 97.06%,60.37% 96.71%,59.94% 96.35%,61.12% 96.00%,59.69% 95.65%,61.50% 95.29%,61.68% 94.94%,61.93% 94.59%,62.12% 94.24%,62.37% 93.88%,62.68% 93.53%,62.80% 93.18%,62.99% 92.82%,63.24% 92.47%,63.49% 92.12%,63.68% 91.76%,63.93% 91.41%,64.17% 91.06%,64.36% 90.71%,64.61% 90.35%,64.80% 90.00%,65.05% 89.65%,65.23% 89.29%,65.36% 88.94%,65.61% 88.59%,65.92% 88.24%,66.04% 87.88%,66.29% 87.53%,66.48% 87.18%,66.73% 86.82%,66.92% 86.47%,67.17% 86.12%,67.35% 85.76%,67.60% 85.41%,67.85% 85.06%,68.04% 84.71%,68.29% 84.35%,68.47% 84.00%,68.72% 83.65%,68.91% 83.29%,69.16% 82.94%,69.28% 82.59%,69.53% 82.24%,69.84% 81.88%,69.97% 81.53%,70.22% 81.18%,70.40% 80.82%,70.65% 80.47%,70.84% 80.12%,71.09% 79.76%,71.34% 79.41%,71.53% 79.06%,71.78% 78.71%,71.96% 78.35%,72.21% 78.00%,72.40% 77.65%,72.65% 77.29%,72.83% 76.94%,73.08% 76.59%,73.33% 76.24%,73.52% 75.88%,73.77% 75.53%,73.89% 75.18%,74.14% 74.82%,74.33% 74.47%,74.58% 74.12%,74.83% 73.76%,75.02% 73.41%,75.26% 73.06%,75.45% 72.71%,75.70% 72.35%,75.89% 72.00%,76.14% 71.65%,76.32% 71.29%,76.57% 70.94%,76.76% 70.59%,77.01% 70.24%,77.26% 69.88%,77.38% 69.53%,77.69% 69.18%,77.82% 68.82%,78.07% 68.47%,78.32% 68.12%,78.50% 67.76%,78.75% 67.41%,78.94% 67.06%,79.19% 66.71%,79.38% 66.35%,79.63% 66.00%,79.81% 65.65%,80.06% 65.29%,80.31% 64.94%,80.50% 64.59%,80.75% 64.24%,80.93% 63.88%,81.12% 63.53%,81.31% 63.18%,81.62% 62.82%,81.74% 62.47%,81.99% 62.12%,82.24% 61.76%,82.43% 61.41%,82.68% 61.06%,82.87% 60.71%,83.12% 60.35%,83.30% 60.00%,83.55% 59.65%,83.80% 59.29%,83.99% 58.94%,84.24% 58.59%,84.42% 58.24%,84.67% 57.88%,84.86% 57.53%,85.11% 57.18%,85.23% 56.82%,85.55% 56.47%,85.79% 56.12%,85.98% 55.76%,86.17% 55.41%,86.36% 55.06%,86.60% 54.71%,86.79% 54.35%,87.04% 54.00%,87.23% 53.65%,87.48% 53.29%,87.73% 52.94%,87.91% 52.59%,88.16% 52.24%,88.35% 51.88%,88.60% 51.53%,88.79% 51.18%,89.03% 50.82%,89.22% 50.47%,89.47% 50.12%,89.72% 49.76%,89.84% 49.41%,90.09% 49.06%,90.28% 48.71%,90.47% 48.35%,90.72% 48.00%,90.97% 47.65%,91.15% 47.29%,91.40% 46.94%,91.59% 46.59%,91.84% 46.24%,92.02% 45.88%,92.27% 45.53%,92.46% 45.18%,92.65% 44.82%,92.96% 44.47%,93.02% 44.12%,93.27% 43.76%,93.52% 43.41%,92.15% 43.06%,92.46% 42.71%,92.65% 42.35%,92.83% 42.00%,94.45% 41.65%,94.52% 41.29%,94.58% 40.94%,94.45% 40.59%,94.21% 40.24%,93.77% 39.88%,93.33% 39.53%,73.21% 39.18%,73.33% 38.82%,73.40% 38.47%,73.52% 38.12%,73.64% 37.76%,73.71% 37.41%,73.83% 37.06%,74.02% 36.71%,74.14% 36.35%,74.27% 36.00%,74.33% 35.65%,74.45% 35.29%,74.64% 34.94%,74.77% 34.59%,74.89% 34.24%,75.02% 33.88%,75.08% 33.53%,75.26% 33.18%,75.39% 32.82%,75.51% 32.47%,75.58% 32.12%,75.70% 31.76%,75.83% 31.41%,75.95% 31.06%,76.14% 30.71%,76.26% 30.35%,76.39% 30.00%,76.45% 29.65%,76.57% 29.29%,76.76% 28.94%,76.88% 28.59%,77.01% 28.24%,77.07% 27.88%,77.20% 27.53%,77.32% 27.18%,77.51% 26.82%,77.57% 26.47%,77.76% 26.12%,77.82% 25.76%,77.94% 25.41%,78.13% 25.06%,78.26% 24.71%,78.38% 24.35%,78.26% 24.00%,78.32% 23.65%,78.44% 23.29%,78.63% 22.94%,78.94% 22.59%,79.00% 22.24%,79.19% 21.88%,79.25% 21.53%,79.13% 21.18%,79.56% 20.82%,79.31% 20.47%,79.44% 20.12%,79.56% 19.76%,80.00% 19.41%,79.81% 19.06%,79.94% 18.71%,80.00% 18.35%,80.12% 18.00%,80.62% 17.65%,80.75% 17.29%,80.75% 16.94%,80.69% 16.59%,80.62% 16.24%,80.50% 15.88%,80.19% 15.53%,80.00% 15.18%,79.75% 14.82%,79.31% 14.47%,78.44% 14.12%,77.13% 13.76%,75.83% 13.41%,74.27% 13.06%,72.71% 12.71%,71.40% 12.35%,69.91% 12.00%,68.41% 11.65%,66.85% 11.29%,65.55% 10.94%,63.99% 10.59%,62.49% 10.24%,61.18% 9.88%,59.63% 9.53%,58.13% 9.18%,56.76% 8.82%,55.26% 8.47%,53.77% 8.12%,52.46% 7.76%,51.09% 7.41%,49.53% 7.06%,48.04% 6.71%,46.54% 6.35%,45.23% 6.00%,43.68% 5.65%,42.18% 5.29%,40.81% 4.94%,39.31% 4.59%,37.82% 4.24%,36.26% 3.88%,34.89% 3.53%,33.40% 3.18%,32.09% 2.82%);transform:rotate(-4deg)}.project .integrated-0 img{height:150%;width:266.67%;left:-83.33%;top:-37%}
.project .integrated-1,.project .integrated-2{background:transparent}.project .integrated-2 img{filter:none}.project .integrated-0{background:transparent}.project .integrated-0 img{position:relative;width:100%;height:100%;left:auto;top:auto;object-fit:contain;filter:none}.project .integrated-0::after{display:none}

.project .integrated-1 img{clip-path:none;width:88%;height:94%;object-fit:contain;filter:none;transform:none}

.about-portrait{margin:0;aspect-ratio:3/4;width:100%;overflow:hidden;align-self:start}.about-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:52% 50%}@media(max-width:700px){.about-portrait{max-width:440px;justify-self:center}}

@keyframes word-unfold-strong{0%{opacity:0;transform:perspective(550px) translateY(.75em) rotateX(-88deg) scaleY(.45);filter:blur(2px)}68%{opacity:1;transform:perspective(550px) translateY(-.035em) rotateX(9deg) scaleY(1.025);filter:blur(0)}100%{opacity:1;transform:perspective(550px) translateY(0) rotateX(0) scaleY(1);filter:blur(0)}}.scroll-word{transform:perspective(550px) translateY(.75em) rotateX(-88deg) scaleY(.45);backface-visibility:hidden}.scroll-heading.is-revealed .scroll-word{animation:word-unfold-strong .95s var(--reveal-delay,0ms) cubic-bezier(.22,.6,.25,1) both}@media(prefers-reduced-motion:reduce){.scroll-word{transform:none;opacity:1}.scroll-heading.is-revealed .scroll-word{animation:none}}

/* Home CTA: reveal the arrow only on intent. */
.circle-link{position:relative;gap:0;transition:background .25s,color .25s}.circle-label{transition:transform .28s cubic-bezier(.2,.7,.2,1)}.circle-arrow{position:absolute;width:1.15em;height:1.15em;right:12%;opacity:0;transform:translate(-5px,5px) scale(.8);transition:opacity .22s,transform .28s cubic-bezier(.2,.7,.2,1);pointer-events:none}.circle-link:is(:hover,:focus-visible){background:var(--pink);color:var(--paper)}.circle-link:is(:hover,:focus-visible) .circle-label{transform:translateX(-.65em)}.circle-link:is(:hover,:focus-visible) .circle-arrow{opacity:1;transform:translate(0,0) scale(1)}.circle-link:focus-visible{outline:2px solid var(--ink);outline-offset:5px}@media(prefers-reduced-motion:reduce){.circle-link,.circle-label,.circle-arrow{transition:none}}

.integrated-4{background:transparent}.integrated-4 img{width:100%;height:100%;object-fit:cover}.lunar-process{display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:850px;margin:40px auto}.lunar-process img{max-height:650px;object-fit:contain;background:#fff}.lunar-case h3{font-size:28px;font-weight:500}.lunar-case .art-credit{margin-top:60px}@media(max-width:700px){.lunar-process{grid-template-columns:1fr;max-width:400px}}

.integrated-4 img{object-position:50% 50%}

/* Portfolio identity and shared editorial rhythm. */
:root{--sans:"Helvetica Neue",Helvetica,Arial,"PingFang SC","Microsoft YaHei",sans-serif;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--gutter:clamp(20px,4vw,72px)}
body{font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--pink);color:var(--paper)}.mono,.eyebrow{font-family:var(--mono);letter-spacing:.09em;font-size:11px}button,a{-webkit-tap-highlight-color:transparent}
header{padding:23px var(--gutter);min-height:88px}.brand{width:52px;height:42px;flex-shrink:0}.brand svg{width:48px;height:42px;transition:transform .3s}.brand:hover svg{transform:rotate(-6deg)}nav{gap:clamp(20px,3vw,48px);font-size:13px}nav a{border-bottom:2px solid transparent;transition:color .2s,border-color .2s}nav a[aria-current]{border-bottom-color:var(--ink)}#language{font-size:12px;padding:10px 0 10px 10px}
.section{padding:clamp(48px,6vw,92px) var(--gutter);max-width:1600px;margin-inline:auto}.page-title{font-size:clamp(64px,8.4vw,136px);line-height:1.02;letter-spacing:-.055em;text-wrap:balance;margin:24px 0 30px}.page-intro{font-size:clamp(19px,2.1vw,28px);line-height:1.5;max-width:720px;margin:0 0 clamp(45px,6vw,90px);color:var(--muted)}.section-head{margin-bottom:36px;padding-top:24px}.section-head h2{font-size:clamp(30px,3.5vw,52px);letter-spacing:-.045em;line-height:1.2;text-wrap:balance}.section-head>.mono{flex-shrink:0;margin-left:25px}
.hero{padding-inline:var(--gutter)}.hero-top{font-size:10px}.hero-bottom{left:var(--gutter);right:var(--gutter);bottom:40px}.intro{font-size:clamp(25px,2.8vw,42px);letter-spacing:-.035em;line-height:1.2}.circle-link{width:156px;height:156px;font-size:15px}.motion-toggle{border-radius:30px;padding:8px 13px;font-family:var(--mono);font-size:10px}.interaction-note{font-family:var(--mono);font-size:10px;line-height:1.7}.name{font-family:Arial,"Helvetica Neue",sans-serif}.name.name-zh{font-family:"PingFang SC","Microsoft YaHei",sans-serif}
.grid{column-gap:clamp(28px,4vw,70px);row-gap:80px}.project-title{margin-top:23px;gap:18px}.project-title h3{font-size:clamp(24px,2.7vw,40px);line-height:1.15;letter-spacing:-.04em}.project-category{font-size:9px;color:var(--muted);letter-spacing:.07em;margin:0 0 12px;line-height:1.6}.project-title small{font-family:var(--mono);font-size:11px;white-space:nowrap}.project-open{border-radius:2px}.project-cover{box-shadow:none}.project:hover .project-cover{box-shadow:none}
.case-study{max-width:1480px}.case-title,.flood-case .case-title{font-size:clamp(60px,8.8vw,132px);line-height:1.02;letter-spacing:-.055em}.case-deck{font-size:clamp(23px,2.6vw,38px);max-width:900px;line-height:1.35}.case-meta{gap:35px;padding:28px 0 40px}.case-meta small{font-family:var(--mono);font-size:10px}.case-meta p{font-size:14px;line-height:1.8}.case-section{padding:64px 0}.case-section h2{font-size:clamp(32px,3.8vw,56px);letter-spacing:-.04em;line-height:1.2;text-wrap:balance}.case-section h3{font-size:clamp(23px,2.2vw,30px);letter-spacing:-.025em;line-height:1.3}.case-prose{gap:clamp(28px,5vw,75px)}.case-prose p,.case-copy,.case-split p,.interaction-rows p{font-size:16px;line-height:1.9;color:#b8c0cc;max-width:68ch}.case-figure figcaption,.flood-caption{font-size:11px;line-height:1.8;color:var(--muted)}.case-button{font-size:12px;padding:14px 20px;border-color:#6b727e;transition:color .2s,border-color .2s,background .2s}.case-button:hover{background:#ffffff06}.back{font-family:var(--mono);font-size:11px;letter-spacing:.04em}.case-next{padding-block:34px 12px}
.about-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(35px,6vw,100px);margin:60px 0 100px}.about-layout h2{font-size:clamp(30px,3.3vw,50px);line-height:1.15}.about-layout p{font-size:18px;line-height:1.85;max-width:58ch}.about-layout .bio-location{font-size:10px;line-height:1.6;margin:7px 0 22px}.about-layout .bio-opportunity{font-size:14px;color:var(--muted);margin:24px 0}.bio-section{margin-top:85px}.bio-row{padding:32px 0;grid-template-columns:minmax(180px,.4fr) 1fr;gap:35px}.bio-row h3{font-size:22px;line-height:1.4;letter-spacing:-.02em}.bio-row p,.bio-skills p{font-size:15px;line-height:1.9}.bio-skills{gap:28px}.bio-skills>div{border-radius:0!important}.contact-icon-row{gap:clamp(24px,5vw,70px);margin-block:45px}.contact-icon-link{padding:12px;min-width:86px}.contact-icon-link svg{width:46px;height:46px}
footer{padding:30px var(--gutter);font-family:var(--mono);font-size:10px;color:var(--muted)}footer a{color:var(--ink)}
html:lang(zh-CN) .page-title,html:lang(zh-CN) .section-head h2,html:lang(zh-CN) .case-section h2{letter-spacing:-.025em}html:lang(zh-CN) .case-prose p,html:lang(zh-CN) .case-copy{line-height:2}
@media(max-width:700px){header{padding:18px 20px;min-height:110px;gap:10px}.brand{width:40px;height:34px}.brand svg{width:38px;height:34px}nav{font-size:11px;gap:12px}.section{padding-block:48px}.page-title{font-size:clamp(52px,14vw,90px);margin-top:20px;overflow-wrap:normal}.hero{height:calc(100svh - 115px);min-height:650px}.hero-bottom{grid-template-columns:1fr 102px;gap:12px;bottom:35px}.circle-link{width:102px;height:102px;font-size:11px}.intro{font-size:26px}.hero-top{font-size:8px}.name{margin-top:85px}.name.name-zh{margin-top:90px}.interaction-note{font-size:9px;max-width:200px}.grid{row-gap:48px}.project:nth-child(even){margin-top:0}.project-category{font-size:8px}.project-title h3{font-size:27px}.project-title{margin-top:18px}.case-title,.flood-case .case-title{font-size:clamp(52px,13vw,84px);overflow-wrap:anywhere}.case-meta{gap:18px}.case-section{padding:44px 0}.case-section h2{font-size:33px}.case-prose,.case-split{grid-template-columns:1fr;gap:10px}.case-actions{align-items:stretch}.case-button{justify-content:center;white-space:normal;text-align:center}.about-layout{grid-template-columns:1fr;gap:36px;margin:40px 0 60px}.about-layout h2{font-size:32px}.about-layout p{font-size:17px}.bio-row{grid-template-columns:1fr;gap:13px}.bio-section{margin-top:55px}.bio-skills{gap:20px}.contact-icon-row{gap:10px;justify-content:space-between}.contact-icon-link{min-width:56px;padding:8px 3px}.contact-icon-link svg{width:35px;height:35px}.contact-icon-link span{font-size:10px}footer{font-size:9px}.section-head>.mono{margin-left:12px}}
@media(prefers-reduced-motion:reduce){.brand:hover svg{transform:none}}
@media(min-width:701px){.hero{min-height:640px;height:calc(100svh - 88px)}.name{margin-top:45px;font-size:clamp(80px,15vw,258px)}.name.name-zh{margin-top:45px;font-size:clamp(110px,18vw,285px)}.hero-bottom .intro{margin-bottom:20px}}
@media(min-width:1500px) and (min-height:950px){.hero{min-height:820px}.name{margin-top:65px}}

.fan-viewport,.fan-card{touch-action:pan-y;-webkit-user-select:none;user-select:none}.fan-card img{-webkit-user-drag:none}@media(hover:none){.fan-viewport,.fan-viewport:hover{--spread:60px;--angle:7deg;--lift:0px;--curve:3px}}

.ui-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.12em;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:square;stroke-linejoin:miter;flex-shrink:0}.circle-arrow{width:1.05em;height:1.05em}
.case-button{gap:.45em;align-items:center}

@font-face{font-family:NavDisplay;src:url('assets/fonts/nav-en.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:NavRoundedCN;src:url('assets/fonts/nav-cn.woff2?v=2') format('woff2');font-weight:400;font-style:normal;font-display:swap}nav{font-family:NavDisplay,var(--sans);font-size:21px;font-weight:700;letter-spacing:.035em;text-transform:uppercase}nav a{padding:7px 0 9px;line-height:1.15}html:lang(zh-CN) nav{font-family:NavRoundedCN,var(--sans);font-size:23px;font-weight:400;letter-spacing:.055em}nav a[aria-current]{border-bottom-width:3px}@media(max-width:700px){nav{font-size:16px;letter-spacing:.01em}html:lang(zh-CN) nav{font-size:20px;letter-spacing:.025em}nav a{padding:6px 0 8px}}

.case-next>.mono{color:var(--muted)}.case-next-link{display:inline-flex;align-items:center;gap:.4em;font-size:clamp(26px,3.8vw,52px);letter-spacing:-.04em;line-height:1.2}.case-next-link .ui-arrow{width:.8em;height:.8em}.case-next-link:hover{color:var(--pink)}@media(max-width:700px){.case-next{gap:18px}.case-next-link{font-size:30px}}
