@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg: #0a0a0a;--bg-elevated: #111111;--bg-card: #161616;--text: #e8e8e8;--text-secondary: #888888;--text-dim: #555555;--border: #222222;--accent: #ff5a24;--font-display: "Space Grotesk", sans-serif;--font-body: "Noto Sans SC", "Space Grotesk", sans-serif;--font-mono: "JetBrains Mono", monospace;--nav-h: 60px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-snap-type:y mandatory;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.6;overflow-x:hidden}main.is-loading{opacity:0;pointer-events:none}main{transition:opacity .6s var(--ease-out-expo)}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{border:none;background:none;color:inherit;cursor:pointer;font-family:inherit}::selection{background:var(--accent);color:var(--bg)}.loader{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:clip-path .8s var(--ease-in-out);clip-path:inset(0 0 0 0)}.loader.is-complete .loader-digit,.loader.is-complete .loader-percent,.loader.is-complete .loader-bar,.loader.is-complete .loader-tagline{animation:digitPulse .6s var(--ease-out-expo)}@keyframes digitPulse{0%{transform:scale(1)}50%{transform:scale(1.15);filter:brightness(1.5)}to{transform:scale(1)}}.loader.is-exiting{clip-path:inset(0 0 0 0);animation:curtainOpen .8s var(--ease-in-out) forwards}@keyframes curtainOpen{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 50% 0 50%);opacity:0}}.loader-inner{text-align:center}.loader-logo{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:40px}.loader-logo-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:dotPulse 1.5s ease-in-out infinite}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.loader-logo-text{font-family:var(--font-display);font-size:1.2rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.loader-progress-wrap{margin-bottom:30px}.loader-number{font-family:var(--font-mono);font-size:clamp(3rem,10vw,6rem);font-weight:500;line-height:1;margin-bottom:16px;letter-spacing:.05em}.loader-digit{display:inline-block}.loader-percent{font-size:.4em;opacity:.5;margin-left:4px}.loader-bar{width:200px;height:2px;background:var(--border);margin:0 auto;border-radius:1px;overflow:hidden}.loader-bar-fill{height:100%;background:var(--accent);border-radius:1px;transition:width .3s ease-out}.loader-tagline{font-size:.8rem;color:var(--text-secondary);letter-spacing:.2em;text-transform:uppercase}.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:100;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,48px);background:#0a0a0acc;backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);border-bottom:1px solid rgba(255,255,255,.04);transition:transform .4s var(--ease-out-expo)}.nav.is-hidden{transform:translateY(-100%)}.nav-brand{display:flex;align-items:center;gap:8px}.nav-brand-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.nav-brand-name{font-family:var(--font-display);font-size:.85rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.nav-links{display:flex;gap:28px}.nav-link{font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);transition:color .3s;position:relative}.nav-link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--accent);transition:width .3s var(--ease-out-expo)}.nav-link:hover,.nav-link.is-active{color:var(--text)}.nav-link.is-active:after,.nav-link:hover:after{width:100%}.hero{position:relative;height:100vh;min-height:600px;display:flex;align-items:center;justify-content:center;scroll-snap-align:start;overflow:hidden}.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.35}.hero-overlay{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 0%,var(--bg) 75%)}.hero-noise{position:absolute;inset:0;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:128px 128px;pointer-events:none}.hero-content{position:relative;z-index:2;text-align:center}.hero-title{display:flex;justify-content:center;margin-bottom:20px}.hero-letter{font-family:var(--font-display);font-size:clamp(2.5rem,8vw,6rem);font-weight:700;letter-spacing:.08em;opacity:0;transform:translateY(40px) rotateX(-15deg);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo);display:inline-block}.hero-letter.is-visible{opacity:1;transform:translateY(0) rotateX(0)}.hero-sub{display:flex;align-items:center;justify-content:center;gap:16px;opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease-out-expo) 1.2s,transform .8s var(--ease-out-expo) 1.2s}.hero-sub.is-visible{opacity:1;transform:translateY(0)}.hero-role-en,.hero-role-cn{font-size:clamp(.7rem,1.5vw,.9rem);font-weight:400;letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary)}.hero-sep{width:30px;height:1px;background:var(--text-dim)}.hero-scroll{position:absolute;bottom:40px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;transition:opacity .8s var(--ease-out-expo) 1.6s}.hero-scroll.is-visible{opacity:1}.hero-scroll span{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.3em;color:var(--text-dim)}.hero-scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--text-dim),transparent);animation:scrollLine 2s ease-in-out infinite}@keyframes scrollLine{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}to{transform:scaleY(0);transform-origin:bottom}}.about{min-height:100vh;scroll-snap-align:start;display:flex;align-items:center;justify-content:center;padding:clamp(80px,10vh,120px) clamp(20px,5vw,80px);position:relative;overflow:hidden}.about:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:1px;height:80px;background:linear-gradient(to bottom,transparent,var(--text-dim),transparent)}.about-inner{width:100%;max-width:900px}.about-header{text-align:center;margin-bottom:60px;opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}.about-header.is-visible{opacity:1;transform:translateY(0)}.about-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.3em;color:var(--accent);display:block;margin-bottom:16px}.about-name{font-family:var(--font-display);font-size:clamp(2rem,5vw,3.5rem);font-weight:700;letter-spacing:.05em;margin-bottom:8px}.about-role{font-size:.9rem;color:var(--text-secondary);letter-spacing:.05em}.about-bio-card{display:flex;gap:32px;padding:32px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:48px;opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease-out-expo) .15s,transform .8s var(--ease-out-expo) .15s}.about-bio-card.is-visible{opacity:1;transform:translateY(0)}.about-bio-avatar{flex-shrink:0}.about-bio-avatar-placeholder{width:100px;height:100px;border-radius:12px;background:var(--bg-elevated);border:1px dashed var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--text-dim)}.about-bio-text{flex:1}.about-bio-text p{font-size:.9rem;line-height:1.8;color:var(--text-secondary);margin-bottom:12px}.about-bio-text p:last-child{margin-bottom:0}.about-skills{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:48px}.about-skill-card{padding:20px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;opacity:0;transform:translateY(20px);transition:opacity .6s var(--ease-out-expo),transform .6s var(--ease-out-expo),border-color .3s}.about-skill-card.is-visible{opacity:1;transform:translateY(0)}.about-skill-card:hover{border-color:var(--accent)}.about-skill-label{display:block;font-family:var(--font-display);font-size:.8rem;font-weight:600;letter-spacing:.05em;margin-bottom:6px}.about-skill-desc{display:block;font-size:.75rem;color:var(--text-secondary);line-height:1.5}.about-exp{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}.about-exp.is-visible{opacity:1;transform:translateY(0)}.about-exp-title{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.3em;color:var(--accent);margin-bottom:24px}.about-exp-placeholder{border-left:1px solid var(--border);padding-left:24px}.about-exp-item{position:relative;padding-bottom:28px;padding-left:20px}.about-exp-item:last-child{padding-bottom:0}.about-exp-dot{position:absolute;left:-29px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.about-exp-content{display:flex;flex-direction:column;gap:2px}.about-exp-company{font-family:var(--font-display);font-size:.95rem;font-weight:600}.about-exp-role{font-size:.8rem;color:var(--text-secondary)}.about-exp-time{font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim);letter-spacing:.05em}.works{scroll-snap-align:start;padding-top:80px}.works-header{display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,48px);margin-bottom:40px}.works-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.3em;color:var(--accent)}.works-count{font-family:var(--font-mono);font-size:.7rem;color:var(--text-dim);letter-spacing:.1em}.project-section{position:relative;min-height:100vh;scroll-snap-align:start;display:flex;flex-direction:column;opacity:0;transform:translateY(40px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}.project-section.is-visible{opacity:1;transform:translateY(0)}.project-cover{position:relative;flex:1;display:flex;align-items:flex-end;min-height:100vh;overflow:hidden}.project-cover-image{position:absolute;inset:0}.project-cover-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out-expo)}.project-section:hover .project-cover-image img{transform:scale(1.03)}.project-cover-gradient{position:absolute;inset:0;pointer-events:none}.project-cover-info{position:relative;z-index:2;padding:clamp(24px,4vw,48px);padding-bottom:clamp(40px,6vh,80px);width:100%;max-width:700px}.project-cover-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}.project-no{font-family:var(--font-mono);font-size:.8rem;font-weight:600;letter-spacing:.1em}.project-category{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.15em;color:var(--text-secondary);text-transform:uppercase;padding:3px 8px;border:1px solid var(--border);border-radius:4px}.project-title{font-family:var(--font-display);font-size:clamp(1.5rem,4vw,2.5rem);font-weight:700;letter-spacing:.02em;margin-bottom:6px;line-height:1.2}.project-en{font-family:var(--font-display);font-size:.8rem;font-weight:400;letter-spacing:.1em;color:var(--text-secondary);text-transform:uppercase;margin-bottom:12px}.project-summary{font-size:.85rem;color:var(--text-secondary);line-height:1.6;max-width:500px;margin-bottom:20px}.project-expand-btn{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);padding:8px 0;border-bottom:1px solid var(--border);transition:color .3s,border-color .3s}.project-expand-btn:hover{color:var(--text);border-color:var(--accent)}.project-expand-arrow{display:inline-block;transition:transform .3s var(--ease-out-expo)}.project-expand-arrow.is-up{transform:rotate(180deg)}.project-detail{padding:clamp(24px,4vw,48px);background:var(--bg-elevated);animation:detailIn .5s var(--ease-out-expo)}@keyframes detailIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.project-narrative{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:40px}.narrative-item{padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px}.narrative-key{display:block;font-family:var(--font-mono);font-size:.65rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;margin-bottom:8px}.narrative-value{font-size:.8rem;color:var(--text-secondary);line-height:1.6}.project-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:40px}.project-page-item{border-radius:8px;overflow:hidden;border:1px solid var(--border);transition:border-color .3s}.project-page-item:hover{border-color:var(--text-dim)}.project-page-item img{width:100%;display:block}.project-divider{height:2px;border-radius:1px;opacity:.6}.contact{min-height:100vh;scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(40px,8vh,80px) clamp(20px,4vw,48px);position:relative;text-align:center}.contact:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:1px;height:60px;background:linear-gradient(to bottom,transparent,var(--text-dim),transparent)}.contact-inner{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}.contact-inner.is-visible{opacity:1;transform:translateY(0)}.contact-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.3em;color:var(--accent);display:block;margin-bottom:16px}.contact-heading{font-family:var(--font-display);font-size:clamp(2rem,5vw,3.5rem);font-weight:700;margin-bottom:12px}.contact-sub{font-size:.9rem;color:var(--text-secondary);margin-bottom:32px}.contact-email-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 32px;border:1px solid var(--border);border-radius:8px;font-size:.85rem;font-weight:500;letter-spacing:.05em;transition:border-color .3s,background .3s}.contact-email-btn:hover{border-color:var(--accent);background:#ff5a240d}.contact-arrow{transition:transform .3s var(--ease-out-expo)}.contact-email-btn:hover .contact-arrow{transform:translate(4px)}.contact-social-placeholder{margin-top:32px;font-size:.75rem;color:var(--text-dim);letter-spacing:.1em}.contact-footer{position:absolute;bottom:24px;text-align:center;width:100%}.contact-footer-line{width:40px;height:1px;background:var(--border);margin:0 auto 12px}.contact-footer p{font-size:.7rem;color:var(--text-dim);letter-spacing:.1em}@media(max-width:768px){:root{--nav-h: 50px}html{scroll-snap-type:y proximity}.nav-links{gap:16px}.nav-link{font-size:.65rem}.nav-brand-name{font-size:.75rem}.hero-title{flex-wrap:wrap;justify-content:center}.hero-letter{font-size:clamp(2rem,10vw,3rem)}.hero-sub{flex-direction:column;gap:8px}.hero-sep{width:20px}.about{padding:60px 20px;min-height:auto}.about-bio-card{flex-direction:column;align-items:center;text-align:center;gap:20px;padding:24px}.about-skills{grid-template-columns:repeat(2,1fr);gap:8px}.about-skill-card{padding:14px}.project-section,.project-cover{min-height:100vh;min-height:100dvh}.project-cover-info{padding:20px 20px 40px}.project-title{font-size:clamp(1.2rem,5vw,1.8rem)}.project-narrative{grid-template-columns:repeat(2,1fr);gap:10px}.project-pages{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.project-detail{padding:20px}.contact{min-height:100vh;min-height:100dvh;padding:60px 20px}.contact-heading{font-size:clamp(1.5rem,6vw,2.5rem)}}@media(max-width:480px){.about-skills{grid-template-columns:1fr 1fr}.about-bio-avatar-placeholder{width:80px;height:80px}.project-narrative,.project-pages{grid-template-columns:1fr}.nav-links{gap:12px}.hero-scroll{bottom:24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-snap-type:none}}
