@font-face{font-family:Barlow;src:url('./assets/fonts/barlow-600.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Barlow;src:url('./assets/fonts/barlow-800.ttf') format('truetype');font-weight:800;font-display:swap}
@font-face{font-family:Inter;src:url('./assets/fonts/inter-400.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--background:#fafafa;--ink:#222;--muted:rgb(34 34 34 / .7);--white:#fff;--container-width:1200px;--page-padding:clamp(20px,4vw,48px);--section-gap:128px;--font-body:"PingFang SC",-apple-system,BlinkMacSystemFont,Arial,sans-serif;--font-heading:"Barlow",var(--font-body);--font-size-title:56px;--radius:40px;--transition:350ms cubic-bezier(.2,.7,.3,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--background);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,p,figure{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img{display:block;max-width:100%}a,button{transition:opacity var(--transition),background var(--transition),transform var(--transition)}a:hover,button:hover{opacity:.7}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:6px}.container{width:min(var(--container-width),calc(100% - var(--page-padding)*2));margin-inline:auto}.skip-link{position:fixed;left:20px;top:-60px;z-index:30;padding:12px;background:white}.skip-link:focus{top:20px}
.nav{position:fixed;z-index:100;top:20px;left:50%;transform:translateX(-50%);width:min(1240px,calc(100% - 32px));height:56px;padding:8px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:rgb(255 255 255 / .4);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:20px;transition:background 300ms ease,box-shadow 300ms ease,backdrop-filter 300ms ease;-webkit-transition:background 300ms ease,box-shadow 300ms ease,-webkit-backdrop-filter 300ms ease}.nav.is-scrolled{background:rgb(255 255 255 / .78);box-shadow:0 10px 30px rgb(0 0 0 / .08)}.nav.is-dark{background:rgb(0 0 0 / .38);color:var(--white);box-shadow:0 10px 30px rgb(0 0 0 / .3);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.nav.is-dark .brand img,.nav.is-dark .lang-toggle img{filter:brightness(0) invert(1)}.nav.is-dark .nav-resume{border-color:rgb(255 255 255 / .6)}.nav.is-dark .pill:hover{background:rgb(255 255 255 / .14)}.brand{flex-shrink:0}.brand img{width:40px;height:40px}.nav-links{display:flex;align-items:center;gap:32px;font-size:14px;line-height:20px}.nav-links [aria-current]{font-weight:600}.lang-toggle{display:flex;align-items:center;gap:4px;border:0;background:none;padding:0;white-space:nowrap}.lang-toggle img{width:24px;height:24px}.pill{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ink);border-radius:999px;background:transparent;white-space:nowrap}.nav-resume{height:36px;padding:8px 24px}.pill:hover{background:rgb(34 34 34 / .08);opacity:1}.pill-filled{background:var(--ink);color:var(--white)}.pill-filled:hover{background:#444}
.hero{padding:116px var(--page-padding) 0;text-align:center}.hero h1{font:800 100px/1.2 var(--font-heading)}.hero h1 span{display:block}.hero-description{max-width:577px;margin:24px auto 0;font-size:18px;line-height:26px;color:var(--muted)}.hero-art{display:block;width:min(834px,100%);margin:48px auto 0}.hero-art img{width:100%;height:auto;aspect-ratio:834/353;object-fit:cover}.hero-art:hover{opacity:1;transform:scale(1.01)}
.work{margin-top:100px}.section-heading{text-align:center}.section-heading h2{font:800 var(--font-size-title)/1.2 var(--font-heading)}.section-heading p{margin:20px auto 0;font-size:18px;line-height:26px;color:var(--muted)}.work .section-heading p{max-width:577px}.work-art{position:relative;margin-top:100px;aspect-ratio:1200/661;overflow:hidden}.work-art img{position:absolute;top:0;left:-9.67%;width:116.42%;max-width:none;height:100%}.about{max-width:1106px;display:grid;grid-template-columns:356px minmax(0,650px);gap:100px;margin-top:130px}.portrait{position:relative;aspect-ratio:356/513;overflow:hidden;border-radius:var(--radius);align-self:start}.portrait img{position:absolute;left:0;top:-11.61%;width:115.87%;max-width:none;height:120.47%}.about-copy h2{font:600 36px/44px var(--font-heading)}.about-description{margin-top:24px;font:400 16px/26px Inter,var(--font-body);overflow-wrap:break-word}.about-actions{display:flex;flex-wrap:wrap;gap:24px;margin-top:30px}.about-actions .pill{height:56px;min-width:170px;padding:12px 24px;font-size:18px;font-weight:600}
.approach{margin-top:var(--section-gap);margin-bottom:var(--section-gap)}.approach .section-heading p{max-width:894px}.process{margin-top:24px}.process>img{width:100%;height:auto;aspect-ratio:1200/204}.process ol{list-style:none;padding:0;margin:-18px 0 0;display:grid;grid-template-columns:repeat(4,1fr);position:relative}.process li{width:89px;text-align:center;font-size:20px;font-weight:900;line-height:26px;justify-self:end;transform:translateX(50%)}.process li:last-child{transform:none}
.contact{position:relative;background:var(--ink);color:white;overflow:hidden;padding-top:calc(546 / 1920 * 100vw)}.contact-art{position:absolute;inset:0 0 auto;height:calc(761 / 1920 * 100vw);overflow:hidden}.contact-art img{position:absolute;top:-12.9%;left:-5.26%;width:110.52%;max-width:none;height:135.65%;object-fit:cover}.contact-art::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgb(34 34 34 / .13) 0%,var(--ink) 85.1511%);pointer-events:none}.contact-copy{position:relative;z-index:1;text-align:center;padding:0 var(--page-padding) 20px}.contact h2{font:800 82px/108px var(--font-heading)}.email{display:inline-block;margin-top:36px;font-size:24px;line-height:20px;color:rgb(255 255 255 / .6)}.email:hover{text-decoration:underline}.copyright{margin-top:114px;font-size:16px;line-height:20px;color:rgb(255 255 255 / .6)}
.resume-dialog{position:fixed;max-width:min(480px,calc(100% - 40px));border:1px solid #ddd;border-radius:20px;padding:32px;background:var(--background);color:var(--ink)}.resume-dialog::backdrop{background:rgb(0 0 0 / .4)}.resume-dialog h2{font:600 36px/1.2 var(--font-heading)}.resume-dialog p{margin:20px 0;line-height:1.6}.resume-dialog .pill{padding:12px 24px}.close-dialog{position:absolute;right:12px;top:8px;background:none;border:0;font-size:28px}.reveal.is-pending{opacity:0;transform:translateY(20px)}.reveal{transition:opacity 450ms ease,transform 450ms ease}
@media(max-width:1199px){:root{--section-gap:100px}.about{grid-template-columns:minmax(240px,356px) minmax(0,650px);gap:clamp(32px,6vw,80px)}.about-actions{margin-top:32px}.about-actions .pill{min-width:150px}.hero h1{font-size:clamp(72px,8vw,100px)}.process li{font-size:18px}}
@media(max-width:767px){:root{--section-gap:72px;--font-size-title:44px}.nav{top:12px;height:auto;min-height:56px;padding:8px 12px;gap:12px}.nav-links{gap:16px}.nav-resume{padding:6px 14px}.hero{padding-top:116px}.hero h1{font-size:clamp(52px,10vw,76px)}.hero-description{font-size:16px;line-height:25px;max-width:540px}.hero-art{margin-top:36px}.work{margin-top:72px}.section-heading p{font-size:16px;line-height:26px}.work-art{margin-top:48px}.about{margin-top:72px;grid-template-columns:1fr;gap:32px;max-width:540px}.portrait{width:min(356px,100%);justify-self:center}.about-actions{margin-top:28px}.approach .section-heading p{text-align:left}.process ol{margin:8px 0 0}.process li{width:auto;max-width:89px;justify-self:center;transform:none;font-size:14px;line-height:20px}.contact{padding-top:clamp(240px,60vw,400px)}.contact-art{height:clamp(320px,80vw,520px)}.contact-art img{top:0;left:50%;width:100%;height:100%;transform:translateX(-50%);object-position:center top}.contact-copy{padding:0 var(--page-padding) 20px}.contact h2{font-size:clamp(48px,9vw,72px);line-height:1.08}.email{font-size:clamp(16px,3vw,22px);line-height:26px;margin-top:24px}.copyright{margin-top:60px}}
@media(max-width:479px){.nav{width:calc(100% - 24px);padding:8px 10px;gap:8px}.brand img{width:30px;height:30px}.nav-links{gap:12px;font-size:12px}.nav-resume{padding:6px 10px;height:32px}.lang-toggle{gap:2px}.lang-toggle img{width:18px;height:18px}.hero h1{font-size:clamp(44px,12.5vw,58px)}.about-actions{gap:12px}.about-actions .pill{flex:1;min-width:0;font-size:16px;padding-inline:16px}.process li{font-size:12px;line-height:18px;max-width:65px}.about-description{font-size:15px;line-height:28px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.reveal.is-pending{opacity:1;transform:none}}
/* A block email link avoids the inline baseline gap in the reference footer. */
.email{display:block;width:fit-content;margin-inline:auto}
/* About Me: intro plus four numbered sections (Chinese copy lives in script.js). */
.about-copy>.about-description{margin-top:14px}
.about-item{margin-top:14px}
.about-item-title{font:600 18px/22px var(--font-heading);margin:0}
.about-item .about-description{margin-top:6px}

/* Continuous entry with an immediate offscreen reset for repeat visits. */
.scroll-lift { opacity:1; transform:translateY(0); transition:opacity 800ms cubic-bezier(.22,1,.36,1),transform 800ms cubic-bezier(.22,1,.36,1); }
.scroll-lift.scroll-lift-pending { opacity:0; transform:translateY(30px); }
@media(prefers-reduced-motion:reduce) {
  .scroll-lift.scroll-lift-pending { opacity:1; transform:none; }
}

.scroll-lift.scroll-lift-reset { transition:none; }
