/* Typography pairs literary Chinese headings with quiet sans-serif labels. */
body{font-family:'PingFang SC','DengXian','Microsoft YaHei','Helvetica Neue',sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h2,.about h2,.profile h2{font-family:'Noto Serif SC','Source Han Serif SC','Songti SC','SimSun',serif;font-weight:400;letter-spacing:.055em;line-height:1.6}
.hero h1{font-family:'Helvetica Neue',Arial,sans-serif;font-weight:300;letter-spacing:-.078em}
.hero h1 .blue{font-family:'Bodoni MT',Didot,'Times New Roman',serif;font-weight:400;letter-spacing:-.065em}
.logo{font-family:'Noto Serif SC','Songti SC','SimSun',serif;letter-spacing:.18em}.logo span,.eyebrow,.hero-top,.project-info p,.image-label,.art-note{font-family:'Helvetica Neue',Arial,sans-serif}.eyebrow{letter-spacing:.23em}.project-info h3{letter-spacing:.075em;font-weight:400}.about-content>p{line-height:2.5}.timeline h3{letter-spacing:.04em}.timeline time{font-family:'Consolas',monospace;font-size:10px;letter-spacing:.035em}
.reading-progress{position:fixed;inset:0 0 auto;height:2px;background:#aabda0;z-index:30;transform:scaleX(0);transform-origin:left;pointer-events:none}
.reveal{opacity:0;transform:translate3d(0,38px,0);transition:opacity 1s cubic-bezier(.22,1,.36,1),transform 1.15s cubic-bezier(.22,1,.36,1)}.reveal.is-visible{opacity:1;transform:translate3d(0,0,0)}.projects>.project:nth-child(even){transition-delay:90ms}.about>div:nth-child(2){transition-delay:120ms}.timeline article:nth-child(2){transition-delay:60ms}.timeline article:nth-child(3){transition-delay:120ms}
nav a{position:relative;padding:7px 0}nav a::after{content:'';position:absolute;left:0;bottom:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .4s}nav a:hover::after,nav a.is-current::after{transform:scaleX(1);transform-origin:left}nav a:hover{color:#e0e5d7}
.project{perspective:1000px}.project-image{transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .65s cubic-bezier(.22,1,.36,1),filter .5s;transform-origin:center}.project-image::after{content:'探索方向 ↗';position:absolute;right:24px;bottom:45px;padding:11px 15px;background:#eeefebeb;color:#242b23;font-size:9px;letter-spacing:.08em;opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s}.project:hover .project-image::after,.project:focus-visible .project-image::after{opacity:1;transform:translateY(0)}.project-info>span{transition:transform .4s}.project:hover .project-info>span{transform:translate(4px,-4px)}.project-info h3{transition:color .4s}.project:hover .project-info h3{color:#617252}.button span,.header-link span{display:inline-block;transition:transform .4s}.button:hover span,.header-link:hover span{transform:translate(4px,-3px)}.filters button{transition:color .3s,border-color .3s}.filters button:hover{color:#20221f}.timeline article{position:relative}.timeline article::before{content:'';position:absolute;inset:0;background:#dce2d450;z-index:-1;transform:scaleX(0);transform-origin:left;transition:transform .6s}.timeline article:hover::before{transform:scaleX(1)}
.hero-copy>.eyebrow{animation:hero-enter 1s .05s both}.hero h1{animation:hero-enter 1.3s .14s both}.hero .intro{animation:hero-enter 1.2s .3s both}.hero .button{animation:hero-enter 1.2s .4s both}.hero-art{animation:art-enter 1.8s .15s both}.sculpture{transition:translate .12s linear}.hero-bottom>a{display:inline-flex;gap:8px}.hero-bottom>a:hover{color:#e0e5d7}
@keyframes hero-enter{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes art-enter{from{opacity:0;filter:blur(8px)}to{opacity:1;filter:blur(0)}}
dialog[open]{animation:dialog-enter .4s cubic-bezier(.22,1,.36,1)}@keyframes dialog-enter{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:760px){.reveal{transform:translate3d(0,24px,0)}.reveal.is-visible{transform:none}.projects>.project:nth-child(even),.about>div:nth-child(2){transition-delay:0s}.section-head h2{font-size:30px}.about h2{font-size:32px}.profile h2{font-size:31px;letter-spacing:.025em}.project-image::after{display:none}.hero h1 .blue{letter-spacing:-.075em}.intro{letter-spacing:.02em}}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}.sculpture{translate:0 0!important}.project-image{transform:none!important}*,*::before,*::after{animation:none!important;transition:none!important}}
