:root{--font-sans:"Helvetica Now", "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mark:"Emblema One", "Times New Roman", serif;--page-x:clamp(1.25rem, 3.2vw, 3.75rem);--header-h:4.25rem;--content-max:72rem;--prose-max:42rem;--section-y:clamp(2.5rem, 6vh, 4.5rem);--fs-display:clamp(2rem, 4.4vw, 4.25rem);--fs-h1:clamp(2rem, 4vw, 3.25rem);--fs-h2:clamp(1.125rem, 1.6vw, 1.35rem);--fs-h3:clamp(1.0625rem, 1.4vw, 1.1875rem);--fs-lede:clamp(1.0625rem, 1.6vw, 1.3125rem);--fs-body:1.0625rem;--fs-body-sm:1rem;--fs-ui:.8125rem;--fs-caption:.8125rem;--fs-micro:.75rem;--fs-wordmark:1.05rem;--track-display:-.04em;--track-heading:-.02em;--track-body:.01em;--track-ui:.02em;--track-label:.06em;--track-cjk-label:.08em;--tap-min:2.75rem;--btn-h:2.75rem;--btn-pad-x:1.05rem;--chip-h:2rem;--radius-pill:999px;--radius-card:18px;--card-pad-x:1.15rem;--card-pad-y:1.2rem;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-spring:cubic-bezier(.22, 1.15, .36, 1);--dur-fast:.14s;--dur-mid:.22s;--dur-slow:.4s;--ease-slider:.28s var(--ease-spring);--focus-ring:2px;--focus-offset:3px;--footer-fade-color:var(--fg);--footer-fade-sharp-opacity:.12;--footer-fade-blur-opacity:.1;--footer-accent:var(--accent-fill);--footer-muted:var(--muted);--footer-copy:var(--muted)}[data-theme=paper]{--bg:#f7f7f3;--fg:#050505;--muted:#050505a3;--line:#05050524;--accent-fill:#050505;--accent-fg:#f7f7f3;--focus-color:#050505;--header-bg:#f7f7f3c7;--card-bg:#fff;--card-border:#0505051a;--card-shadow:0 1px 2px #0505050a, 0 10px 28px #0505050d;--card-shadow-hover:0 2px 4px #0505050d, 0 16px 36px #05050517;--cap-on:#050505;--cap-off:#f7f7f39e;--cap-track:#e8e8e4f0;--cap-track-fg:#050505;--cap-sub-on:#050505;--cap-sub-idle:#f7f7f394;--cap-sub-hover:#f7f7f3}[data-theme=cinema]{--bg:#050505;--fg:#f7f7f3;--muted:#f7f7f3b8;--line:#f7f7f32e;--accent-fill:#f7f7f3;--accent-fg:#050505;--focus-color:#f7f7f3;--header-bg:transparent;--card-bg:#f7f7f30f;--card-border:#f7f7f324;--card-shadow:0 1px 2px #00000047, 0 10px 28px #00000047;--card-shadow-hover:0 2px 4px #00000052, 0 16px 36px #0000005c;--cap-on:#f7f7f3;--cap-off:#f7f7f38c;--cap-track:#0505059e;--cap-track-fg:#f7f7f3;--cap-sub-on:#f7f7f3;--cap-sub-idle:#f7f7f38c;--cap-sub-hover:#f7f7f3;--footer-fade-color:#e8eef7;--footer-fade-sharp-opacity:.14;--footer-fade-blur-opacity:.12}@font-face{font-family:Emblema One;src:url(/fonts/EmblemaOne-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{font-family:var(--font-sans,"Helvetica Now", "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Microsoft YaHei", sans-serif)}*{box-sizing:border-box}html,body{min-height:100%;margin:0}[data-theme=cinema] body{color:#f7f7f3;background:#050505}.hero{isolation:isolate;background:var(--bg,#050505);min-height:100svh;position:relative;overflow:hidden}.background-video,.video-shade{width:100%;height:100%;position:fixed;inset:0}.background-video{z-index:-2;object-fit:cover;object-position:50% 18%;background:var(--bg,#050505)}.video-shade{z-index:-1;pointer-events:none;background:linear-gradient(90deg,#000000b8 0%,#00000057 50%,#0000001a 100%),linear-gradient(#0000 52%,#00000075)}.hero-copy{z-index:1;min-height:100svh;padding:calc(var(--header-h,4.25rem) + 1.25rem) clamp(1.25rem, 8vw, 9rem) clamp(2rem, 5vh, 3.5rem);flex-direction:column;justify-content:flex-end;align-items:flex-start;display:flex;position:relative}.agent-label{color:#f7f7f3e0;font-size:var(--fs-caption,.75rem);letter-spacing:var(--track-label,.06em);text-transform:uppercase;filter:blur(.4px);gap:.3rem;margin:0 0 1.25rem;line-height:1.35;display:grid}.agent-label span:last-child{max-width:22rem;font-size:var(--fs-micro,.6875rem);letter-spacing:.045em;color:#f7f7f3b8;text-transform:none;filter:none}.type-line{max-width:min(51rem,100%);min-height:2.4em;font-size:var(--fs-display);letter-spacing:var(--track-display);text-wrap:balance;margin:0;font-weight:400;line-height:1.08}.type-line:after{content:"";vertical-align:-.05em;background:currentColor;width:2px;height:.82em;margin-left:.08em;animation:.76s step-end infinite blink;display:inline-block}.type-line.is-done:after{animation:.76s step-end 2 blink,.4s 1.5s forwards caret-fade}.hero-actions{flex-wrap:wrap;gap:.55rem;max-width:min(46rem,100%);margin-top:clamp(1.5rem,3.5vh,2.5rem);animation:.55s .85s both rise-in;display:flex}.hero-actions>a,.email-copy{min-height:var(--btn-h,2.75rem);padding:.65rem var(--btn-pad-x,1.05rem);border-radius:var(--radius-pill,999px);font-size:var(--fs-ui,.8125rem);letter-spacing:var(--track-ui,.02em);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-fast,.14s) var(--ease-out,ease), color var(--dur-fast,.14s) var(--ease-out,ease), border-color var(--dur-fast,.14s) var(--ease-out,ease), transform var(--dur-fast,.14s) var(--ease-out,ease);border:1px solid #f7f7f3c7;justify-content:center;align-items:center;gap:.45rem;font-weight:600;line-height:1.25;display:inline-flex}.hero-actions>a{color:#050505;background:#f7f7f3;border-color:#f7f7f3}.hero-actions>a:hover{color:#f7f7f3;background:0 0;border-color:#f7f7f3}.email-copy{color:#f7f7f3;background:0 0;position:relative}.email-copy:hover{color:#050505;background:#f7f7f3;border-color:#f7f7f3}.hero-actions>a:active,.email-copy:active{transform:scale(.97)}.copy-icon{fill:none;stroke:currentColor;stroke-width:1.35px;flex-shrink:0;width:.85rem;height:.85rem}.email-copy__status{color:#f7f7f3;font-size:var(--fs-micro,.6875rem);letter-spacing:.02em;text-align:center;white-space:nowrap;font-weight:500;position:absolute;inset:auto 0 -1.35rem}@keyframes blink{50%{opacity:0}}@keyframes caret-fade{to{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(.65rem)}to{opacity:1;transform:translateY(0)}}@media (width>=768px){.hero-copy{justify-content:flex-end}}@media (width<=767px){.hero-copy{padding-top:calc(var(--header-h,4.25rem) + 2.5rem)}.type-line{min-height:3em}.agent-label{margin-bottom:1rem}.hero-actions{gap:.5rem}.hero-actions>a,.email-copy{min-height:2.6rem}}@media (prefers-reduced-motion:reduce){.type-line:after{display:none}.hero-actions{animation:none}.hero-actions>a:active,.email-copy:active{transform:none}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);letter-spacing:var(--track-body);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-optical-sizing:auto;margin:0;line-height:1.5}[data-theme=paper] body{min-height:100svh}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}:focus-visible{outline:var(--focus-ring) solid var(--focus-color,var(--fg));outline-offset:var(--focus-offset)}.site-header{min-height:var(--header-h);padding:0 var(--page-x);font-size:var(--fs-ui);letter-spacing:var(--track-ui);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(.75rem,2vw,1.25rem);font-weight:600;display:grid}.brand-mark{color:var(--fg);font-family:var(--font-mark);letter-spacing:.02em;white-space:nowrap;opacity:.92;transition:opacity var(--dur-fast) var(--ease-out);justify-self:start;align-items:center;font-size:clamp(1.05rem,1.6vw,1.25rem);font-weight:400;text-decoration:none;display:inline-flex}.brand-mark:hover{opacity:1}.header-center{justify-self:center;align-items:center;display:flex}.header-actions{justify-self:end;align-items:center;gap:clamp(.55rem,1.2vw,.85rem);display:flex}.lang-slider,.nav-capsule{--pill-h:2.6rem}[data-theme=cinema] .site-header{z-index:4;color:var(--fg);position:absolute;top:0;left:0;right:0}[data-theme=paper] .site-header{z-index:10;background:var(--header-bg);backdrop-filter:blur(16px)saturate(1.4);border-bottom:1px solid var(--line);position:sticky;top:0}@media (prefers-reduced-transparency:reduce){[data-theme=paper] .site-header{background:var(--bg);backdrop-filter:none}}.nav-capsule{--pill-h:2.6rem;--cap-pad:3px;--cap-morph:.48s;--cap-sub-morph:.42s;min-height:var(--pill-h);padding:var(--cap-pad);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--cap-track);isolation:isolate;-webkit-user-select:none;user-select:none;touch-action:manipulation;width:max-content;min-width:clamp(12.5rem,28vw,14.5rem);transition:min-width var(--cap-morph) var(--ease-spring);grid-template-columns:1fr 1fr;align-items:stretch;display:grid;position:relative;overflow:hidden}.nav-capsule[data-expanded=true]{grid-template-columns:minmax(4.25rem,.78fr) minmax(0,1.35fr);min-width:clamp(17.5rem,40vw,21rem)}.nav-capsule__thumb{top:var(--cap-pad);bottom:var(--cap-pad);left:var(--cap-pad);width:calc((100% - var(--cap-pad) * 2) / 2);border-radius:var(--radius-pill);background:var(--accent-fill);z-index:1;pointer-events:none;transition:left var(--cap-morph) var(--ease-spring), width var(--cap-morph) var(--ease-spring);position:absolute}.nav-capsule[data-expanded=true] .nav-capsule__thumb{left:calc(var(--cap-pad) + (100% - var(--cap-pad) * 2) * .38);width:calc((100% - var(--cap-pad) * 2) * .62)}.nav-capsule__seg,.nav-capsule__sub{z-index:3;border-radius:var(--radius-pill);min-height:2.2rem;font-size:var(--fs-ui);letter-spacing:var(--track-ui);cursor:pointer;white-space:nowrap;transition:color var(--dur-mid) var(--ease-out), opacity var(--dur-mid) var(--ease-out);background:0 0;border:0;justify-content:center;align-items:center;padding:0 .7rem;font-weight:600;line-height:1;display:flex;position:relative}.nav-capsule__studio{color:color-mix(in srgb, var(--cap-track-fg) 72%, transparent);transition:color var(--dur-mid) var(--ease-out), opacity var(--cap-morph) var(--ease-out), transform var(--cap-morph) var(--ease-spring)}.nav-capsule__studio:hover{color:var(--cap-track-fg)}.nav-capsule[data-expanded=false] .nav-capsule__home{color:var(--accent-fg)}.nav-capsule[data-expanded=false] .nav-capsule__home:hover{color:var(--accent-fg);opacity:.82}.nav-capsule[data-expanded=true] .nav-capsule__home{color:color-mix(in srgb, var(--cap-track-fg) 78%, transparent)}.nav-capsule[data-expanded=true] .nav-capsule__home:hover{color:var(--cap-track-fg);opacity:1}.nav-capsule[data-expanded=true] .nav-capsule__studio{opacity:0;pointer-events:none;transform:translate(-8px)scale(.94)}.nav-capsule__expand{z-index:2;top:var(--cap-pad);right:var(--cap-pad);bottom:var(--cap-pad);width:calc((100% - var(--cap-pad) * 2) * .62);border-radius:var(--radius-pill);opacity:0;pointer-events:none;transition:opacity var(--cap-morph) var(--ease-out), transform var(--cap-morph) var(--ease-spring);grid-template-columns:1fr 1fr;align-items:stretch;display:grid;position:absolute;transform:translate(8px)scale(.96)}.nav-capsule[data-expanded=true] .nav-capsule__expand{opacity:1;pointer-events:auto;transition-delay:60ms;transform:translate(0,0)scale(1)}.nav-capsule__inner-pill{border-radius:var(--radius-pill);background:var(--accent-fg);border:1.5px solid var(--accent-fill);z-index:1;pointer-events:none;width:calc(50% - 2px);transition:transform var(--cap-sub-morph) var(--ease-spring);position:absolute;top:0;bottom:0;left:0}.nav-capsule[data-sub-page=about] .nav-capsule__inner-pill,.nav-capsule[data-page=about] .nav-capsule__inner-pill,.nav-capsule[data-page=connect] .nav-capsule__inner-pill{transform:translate(calc(100% + 4px))}.nav-capsule__sub{z-index:3;color:var(--cap-sub-idle);padding:0 .55rem}.nav-capsule__sub:hover{color:var(--cap-sub-hover)}.nav-capsule[data-page=projects] .nav-capsule__projects,.nav-capsule[data-sub-page=projects] .nav-capsule__projects,.nav-capsule[data-page=about] .nav-capsule__about,.nav-capsule[data-sub-page=about] .nav-capsule__about,.nav-capsule[data-page=connect] .nav-capsule__about{color:var(--cap-sub-on);font-weight:700}.nav-capsule[data-page=projects] .nav-capsule__projects:hover,.nav-capsule[data-sub-page=projects] .nav-capsule__projects:hover,.nav-capsule[data-page=about] .nav-capsule__about:hover,.nav-capsule[data-sub-page=about] .nav-capsule__about:hover,.nav-capsule[data-page=connect] .nav-capsule__about:hover{color:var(--cap-sub-on)}@media (width<=767px){.site-header{grid-template-columns:1fr auto}.header-center,.nav-capsule{display:none}}body.menu-open .site-header{z-index:20;backdrop-filter:none;background:0 0;border-bottom-color:#0000}body.menu-open{overflow:hidden}.menu-toggle{border:1px solid var(--line);border-radius:var(--radius-pill);background:color-mix(in srgb, var(--bg) 70%, var(--fg) 6%);color:inherit;cursor:pointer;min-width:var(--tap-min);min-height:var(--tap-min);z-index:12;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);place-items:center;padding:0;display:none;position:relative}.menu-toggle:hover{border-color:color-mix(in srgb, var(--fg) 28%, transparent)}.menu-toggle:active{transform:scale(.96)}.menu-toggle__box{place-items:center;width:1.25rem;height:1.05rem;display:grid;position:relative}.menu-toggle__box span{border-radius:var(--radius-pill);transform-origin:50%;height:1.5px;transition:transform .32s var(--ease-spring), opacity var(--dur-fast) var(--ease-out), width .22s var(--ease-out);background:currentColor;display:block;position:absolute;left:0;right:0}.menu-toggle__box span:first-child{width:100%;top:0}.menu-toggle__box span:nth-child(2){width:78%;margin-top:-.75px;top:50%}.menu-toggle__box span:nth-child(3){width:56%;bottom:0}body.menu-open .menu-toggle__box span:first-child{width:100%;margin-top:-.75px;top:50%;transform:rotate(45deg)}body.menu-open .menu-toggle__box span:nth-child(2){opacity:0;transform:scaleX(.4)}body.menu-open .menu-toggle__box span:nth-child(3){width:100%;margin-top:-.75px;top:50%;bottom:auto;transform:rotate(-45deg)}body.menu-open .menu-toggle{background:color-mix(in srgb, var(--bg) 88%, var(--fg) 8%);border-color:color-mix(in srgb, var(--fg) 22%, transparent)}.mobile-menu{--menu-blur:26px;--menu-veil-top:#f7f7f347;--menu-veil-bottom:#f7f7f394;z-index:11;padding:calc(var(--header-h) + env(safe-area-inset-top,0px) + .75rem) max(var(--page-x), env(safe-area-inset-left,0px)) calc(1.75rem + env(safe-area-inset-bottom,0px)) max(var(--page-x), env(safe-area-inset-right,0px));pointer-events:none;visibility:hidden;background:0 0;flex-direction:column;justify-content:flex-end;transition:visibility 0s linear .42s;display:flex;position:fixed;inset:0}.mobile-menu:before{content:"";z-index:0;background:linear-gradient(180deg, var(--menu-veil-top) 0%, var(--menu-veil-bottom) 100%);backdrop-filter:blur()saturate();opacity:0;transition:opacity .4s var(--ease-out), -webkit-backdrop-filter .48s var(--ease-out), backdrop-filter .48s var(--ease-out);position:absolute;inset:0}.mobile-menu[aria-hidden=false]{pointer-events:auto;visibility:visible;transition:visibility linear}.mobile-menu[aria-hidden=false]:before{opacity:1;backdrop-filter:blur(var(--menu-blur)) saturate(1.25);transition:opacity .42s var(--ease-out), -webkit-backdrop-filter .52s var(--ease-out), backdrop-filter .52s var(--ease-out)}[data-theme=paper] .mobile-menu{--menu-veil-top:#f7f7f342;--menu-veil-bottom:#f7f7f38a}[data-theme=cinema] .mobile-menu{--menu-veil-top:#05050552;--menu-veil-bottom:#05050594}.mobile-menu__sheet,.mobile-menu__eyebrow,.mobile-menu__links{z-index:1;position:relative}.mobile-menu__sheet{opacity:0;filter:blur(18px);width:min(100%,28rem);transition:opacity .36s var(--ease-out), filter .52s var(--ease-out), transform .48s var(--ease-spring);will-change:opacity, filter, transform;flex-direction:column;gap:1.25rem;margin:0 auto;display:flex;transform:translateY(1.1rem)scale(.985)}.mobile-menu[aria-hidden=false] .mobile-menu__sheet{opacity:1;filter:blur();transition-delay:80ms,80ms,80ms;transform:translateY(0)scale(1)}.mobile-menu:not([aria-hidden=false]) .mobile-menu__sheet{transition-duration:.28s,.32s,.28s;transition-delay:0s}.mobile-menu__eyebrow{color:var(--muted);font-size:var(--fs-caption);letter-spacing:var(--track-label);text-transform:uppercase;opacity:0;filter:blur(10px);transition:opacity .34s var(--ease-out), filter .42s var(--ease-out);margin:0;font-weight:600}.mobile-menu[aria-hidden=false] .mobile-menu__eyebrow{opacity:1;filter:blur();transition-delay:.12s}.mobile-menu:not([aria-hidden=false]) .mobile-menu__eyebrow{transition-delay:0s}.mobile-menu__links{flex-direction:column;gap:.35rem;display:flex}.mobile-menu__links a{min-height:3.5rem;color:var(--muted);opacity:0;filter:blur(12px);will-change:opacity, filter, transform;transition:opacity .36s var(--ease-out), filter .48s var(--ease-out), transform .42s var(--ease-spring), color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border:1px solid #0000;border-radius:16px;grid-template-columns:2.25rem 1fr;align-items:center;gap:.85rem;padding:.55rem .85rem;text-decoration:none;display:grid;transform:translateY(.7rem)}.mobile-menu[aria-hidden=false] .mobile-menu__links a{opacity:1;filter:blur();transform:translateY(0)}.mobile-menu[aria-hidden=false] .mobile-menu__links a:first-child{transition-delay:.14s,.14s,.14s,0s,0s,0s}.mobile-menu[aria-hidden=false] .mobile-menu__links a:nth-child(2){transition-delay:.2s,.2s,.2s,0s,0s,0s}.mobile-menu[aria-hidden=false] .mobile-menu__links a:nth-child(3){transition-delay:.26s,.26s,.26s,0s,0s,0s}.mobile-menu[aria-hidden=false] .mobile-menu__links a:nth-child(4){transition-delay:.32s,.32s,.32s,0s,0s,0s}.mobile-menu:not([aria-hidden=false]) .mobile-menu__links a{transition-duration:.22s,.26s,.22s,.14s,.14s,.14s;transition-delay:0s}.mobile-menu__index{font-size:var(--fs-caption);letter-spacing:var(--track-ui);color:var(--muted);font-variant-numeric:tabular-nums;font-weight:600}.mobile-menu__index:before{counter-increment:menu-item;content:counter(menu-item, decimal-leading-zero)}.mobile-menu__links{counter-reset:menu-item}.mobile-menu__label{letter-spacing:-.035em;color:var(--fg);font-size:clamp(1.65rem,7.5vw,2.35rem);font-weight:500;line-height:1.15}.mobile-menu__links a:hover,.mobile-menu__links a:focus-visible{color:var(--fg);background:color-mix(in srgb, var(--fg) 5%, transparent);border-color:var(--line)}.mobile-menu__links a[aria-current=page]{color:var(--accent-fg);background:var(--accent-fill);border-color:var(--accent-fill);box-shadow:var(--card-shadow)}.mobile-menu__links a[aria-current=page] .mobile-menu__label{color:var(--accent-fg);font-weight:600}.mobile-menu__links a[aria-current=page] .mobile-menu__index{color:color-mix(in srgb, var(--accent-fg) 72%, transparent)}.mobile-menu__links a:active{transform:scale(.985)}@media (width<=767px){.menu-toggle{display:grid}}@media (prefers-reduced-transparency:reduce){.mobile-menu:before,.mobile-menu[aria-hidden=false]:before{background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.nav-capsule,.nav-capsule__thumb,.nav-capsule__studio,.nav-capsule__expand,.nav-capsule__inner-pill,.nav-capsule__seg,.nav-capsule__sub,.brand-mark,.menu-toggle,.menu-toggle__box span,.mobile-menu,.mobile-menu__sheet,.mobile-menu__eyebrow,.mobile-menu__links a{transition:none!important}.mobile-menu[aria-hidden=false]:before{backdrop-filter:blur(var(--menu-blur)) saturate(1.25)}.mobile-menu:before{transition:none!important}.mobile-menu__sheet,.mobile-menu__eyebrow,.mobile-menu__links a,.mobile-menu[aria-hidden=false] .mobile-menu__sheet,.mobile-menu[aria-hidden=false] .mobile-menu__eyebrow,.mobile-menu[aria-hidden=false] .mobile-menu__links a{opacity:1;filter:none!important;transform:none!important}}.lang-slider{border:1px solid var(--line);border-radius:var(--radius-pill);width:max-content;min-width:clamp(7.25rem,16vw,8.75rem);min-height:var(--pill-h,2.6rem);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:color-mix(in srgb, var(--bg) 72%, var(--fg) 8%);grid-template-columns:1fr 1fr;align-items:stretch;padding:3px;display:inline-grid;position:relative;overflow:hidden}[data-theme=cinema] .lang-slider{background:#0505059e;border-color:#f7f7f347}[data-theme=cinema] .lang-slider__thumb{background:#f7f7f3}[data-theme=cinema] .lang-slider[data-lang=zh] .lang-slider__opt[data-locale=zh],[data-theme=cinema] .lang-slider[data-lang=en] .lang-slider__opt[data-locale=en]{color:#050505}[data-theme=cinema] .lang-slider__opt{color:#f7f7f3d1}.lang-slider__thumb{border-radius:var(--radius-pill);background:var(--accent-fill);width:calc(50% - 3px);transition:transform var(--ease-slider);pointer-events:none;will-change:transform;position:absolute;top:3px;bottom:3px;left:3px;transform:translate(0)}.lang-slider[data-lang=en] .lang-slider__thumb{transform:translate(100%)}.lang-slider__opt{z-index:1;color:var(--muted);font-size:var(--fs-caption);letter-spacing:var(--track-ui);text-align:center;cursor:pointer;border-radius:var(--radius-pill);width:100%;min-height:2.2rem;transition:color var(--dur-mid) var(--ease-out), transform var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);background:0 0;border:0;padding:.45rem .75rem;font-weight:600;position:relative}.lang-slider__opt:hover{color:var(--fg)}[data-theme=cinema] .lang-slider__opt:hover{color:#f7f7f3}.lang-slider__opt:active{transform:scale(.96)}.lang-slider[data-lang=zh] .lang-slider__opt[data-locale=zh],.lang-slider[data-lang=en] .lang-slider__opt[data-locale=en],.lang-slider[data-lang=zh] .lang-slider__opt[data-locale=zh]:hover,.lang-slider[data-lang=en] .lang-slider__opt[data-locale=en]:hover{color:var(--accent-fg)}[data-theme=cinema] .lang-slider[data-lang=zh] .lang-slider__opt[data-locale=zh]:hover,[data-theme=cinema] .lang-slider[data-lang=en] .lang-slider__opt[data-locale=en]:hover{color:#050505}.lang-slider.is-switching .lang-slider__opt{pointer-events:none}.lang-slider.is-switching .lang-slider__opt[aria-pressed=false]{opacity:.55}@media (prefers-reduced-motion:reduce){.lang-slider__thumb{transition:none}.lang-slider__opt,.lang-slider__opt:active{transition:none;transform:none}}.paper-main{max-width:var(--content-max);padding:var(--section-y) var(--page-x) calc(var(--section-y) * 1.5);margin:0 auto}.page-header{margin-bottom:calc(var(--section-y) * .65);border-bottom:1px solid var(--line);padding-bottom:calc(var(--section-y) * .6)}.page-header h1{font-size:var(--fs-h1);letter-spacing:var(--track-display);font-optical-sizing:auto;margin:0;font-weight:600;line-height:1.12}.page-header .lede{max-width:var(--prose-max);color:var(--muted);font-size:var(--fs-lede);letter-spacing:var(--track-body);text-wrap:pretty;margin:.75rem 0 0;font-weight:400;line-height:1.55}.prose{max-width:var(--prose-max)}.prose p{font-size:var(--fs-body);letter-spacing:var(--track-body);color:var(--fg);text-wrap:pretty;margin:0 0 1.1em;line-height:1.8}.prose p:last-child{margin-bottom:0}.project-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,17.5rem),1fr));gap:clamp(1.15rem,2.2vw,1.65rem);display:grid}@media (width>=640px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.project-grid{grid-template-columns:repeat(3,1fr)}}.project-card{--rx:0deg;--ry:0deg;--lift:0px;--glare:0;--gx:50%;--gy:50%;--glare-angle:118deg;border-radius:var(--radius-card,18px);border:1px solid var(--card-border,var(--line));background:var(--card-bg,var(--bg));height:100%;box-shadow:var(--card-shadow,none);transform:perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry)) translateZ(var(--lift));transform-style:preserve-3d;transition:transform .18s var(--ease-out), box-shadow var(--dur-mid) var(--ease-out), border-color var(--dur-mid) var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden}.project-card:focus-visible{border-color:color-mix(in srgb, var(--fg) 18%, transparent);box-shadow:var(--card-shadow-hover,var(--card-shadow))}.project-card__glare{z-index:2;border-radius:inherit;pointer-events:none;opacity:var(--glare);background:linear-gradient(var(--glare-angle), transparent 22%, #ffffff14 38%, #ffffff57 48%, #ffffff85 50%, #ffffff57 52%, #ffffff14 62%, transparent 78%);background-size:220% 220%;background-position:var(--gx) var(--gy);mix-blend-mode:soft-light;transition:opacity .16s var(--ease-out);position:absolute;inset:0}.project-card__glare:before{content:"";border-radius:inherit;background:radial-gradient(circle at var(--gx) var(--gy), #ffffff5c 0%, transparent 50%);mix-blend-mode:plus-lighter;position:absolute;inset:0}.project-card__img{aspect-ratio:16/10;object-fit:cover;object-position:top center;background:color-mix(in srgb, var(--line) 70%, var(--bg));border-bottom:1px solid var(--card-border,var(--line));flex-shrink:0;width:100%;display:block}.project-card__img--empty{color:var(--muted);font-size:var(--fs-ui);letter-spacing:var(--track-label);font-variant-numeric:tabular-nums;place-items:center;font-weight:500;display:grid}.project-card h2,.project-card__meta,.project-card__summary{margin-left:var(--card-pad-x,1.15rem);margin-right:var(--card-pad-x,1.15rem)}.project-card h2{margin-top:var(--card-pad-y,1.2rem);font-size:var(--fs-h2);letter-spacing:var(--track-heading);margin-bottom:0;font-weight:600;line-height:1.3}.project-card__meta{color:var(--muted);font-size:var(--fs-caption);letter-spacing:var(--track-ui);flex-wrap:wrap;align-items:center;gap:.45rem .65rem;margin-top:.55rem;margin-bottom:0;line-height:1.4;display:flex}.project-card__year{border-radius:var(--radius-pill);border:1px solid var(--card-border,var(--line));background:color-mix(in srgb, var(--bg) 70%, var(--fg) 4%);min-height:1.55rem;color:var(--fg);font-size:var(--fs-caption);font-variant-numeric:tabular-nums;letter-spacing:var(--track-ui);align-items:center;padding:.15rem .6rem;font-weight:600;display:inline-flex}.project-card__tags{letter-spacing:var(--track-ui)}.project-card__summary{color:var(--muted);font-size:var(--fs-body-sm);letter-spacing:var(--track-body);text-wrap:pretty;flex:1;margin-top:.65rem;margin-bottom:0;line-height:1.65}.project-card:after{content:"";height:var(--card-pad-y,1.2rem);flex-shrink:0;display:block}.section-title{margin:calc(var(--section-y) * .95) 0 .85rem;letter-spacing:var(--track-heading);color:var(--fg);font-size:clamp(1.125rem,1.8vw,1.35rem);font-weight:600;line-height:1.25}:lang(en) .section-title{text-transform:uppercase;letter-spacing:.04em;font-size:clamp(1rem,1.6vw,1.25rem)}.meta-table{border-top:1px solid var(--line);max-width:var(--prose-max);margin:0}.meta-table>div{border-bottom:1px solid var(--line);grid-template-columns:minmax(5.5rem,7.5rem) 1fr;align-items:baseline;gap:.75rem 1.25rem;padding:1.05rem 0;display:grid}.meta-table dt{color:var(--muted);font-size:var(--fs-body-sm);letter-spacing:var(--track-cjk-label);margin:0;font-weight:600;line-height:1.45}.meta-table dd{color:var(--fg);letter-spacing:var(--track-body);margin:0;font-size:clamp(1.0625rem,1.5vw,1.1875rem);font-weight:500;line-height:1.5}.timeline{max-width:var(--prose-max);margin:0;padding:0;list-style:none}.timeline li{border-bottom:1px solid var(--line);grid-template-columns:4.5rem 1fr;align-items:start;gap:.75rem 1.25rem;padding:1.25rem 0;display:grid}.timeline__year{color:var(--fg);font-variant-numeric:tabular-nums;letter-spacing:var(--track-ui);padding-top:.1em;font-size:clamp(1rem,1.4vw,1.125rem);font-weight:600;line-height:1.35}.timeline h3{letter-spacing:var(--track-heading);color:var(--fg);margin:0;font-size:clamp(1.125rem,1.7vw,1.3125rem);font-weight:600;line-height:1.3}.timeline p{color:var(--muted);font-size:var(--fs-body-sm);letter-spacing:var(--track-body);text-wrap:pretty;margin:.4rem 0 0;line-height:1.65}.skill-tags{flex-wrap:wrap;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--line);border-radius:var(--radius-pill);min-height:var(--chip-h);font-size:var(--fs-body-sm);letter-spacing:var(--track-ui);color:var(--fg);align-items:center;padding:.55rem 1.1rem;font-weight:500;line-height:1.3;display:inline-flex}.about-bio p:first-child{font-size:clamp(1.0625rem,1.5vw,1.125rem);font-weight:500;line-height:1.75}.about-page .section-title+.meta-table,.about-page .section-title+.timeline,.about-page .section-title+.skill-tags{margin-top:0}.connect-page .connect-intro{max-width:40rem}.connect-layout,.connect-embed{gap:clamp(2.25rem,4vw,3.5rem);margin-top:.25rem;display:grid}.connect-layout{max-width:56rem}@media (width>=860px){.connect-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:start;gap:clamp(2.5rem,7vw,5.5rem)}}.connect-primary{flex-direction:column;align-items:flex-start;gap:.85rem;min-width:0;display:flex}.connect-email{width:auto;max-width:100%;min-height:var(--btn-h);border:1px solid var(--line);color:var(--fg);text-align:left;cursor:pointer;transition:background-color var(--dur-mid) var(--ease-out), border-color var(--dur-mid) var(--ease-out), color var(--dur-mid) var(--ease-out), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-mid) var(--ease-out);background:0 0;border-radius:999px;align-items:center;gap:.85rem;padding:.95rem 1.25rem;display:inline-flex;position:relative}.connect-email:hover{border-color:color-mix(in srgb, var(--fg) 22%, transparent);background:color-mix(in srgb, var(--fg) 4%, transparent)}.connect-email:active{transform:scale(.985)}.connect-email:focus-visible{outline:var(--focus-ring) solid var(--focus-color,var(--fg));outline-offset:var(--focus-offset)}.connect-email.is-copied{border-color:color-mix(in srgb, var(--fg) 28%, transparent);background:color-mix(in srgb, var(--fg) 7%, transparent)}.connect-email.is-copy-fail{border-color:color-mix(in srgb, #b42318 45%, var(--line))}.connect-email__addr{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(1.05rem,2.2vw,1.45rem);font-weight:600;line-height:1.2}.connect-email__icon{width:1.35rem;height:1.35rem;color:var(--muted);transition:color var(--dur-fast) var(--ease-out), transform var(--dur-mid) var(--ease-spring);flex-shrink:0;position:relative}.connect-email:hover .connect-email__icon{color:var(--fg)}.connect-email__icon svg{width:100%;height:100%;transition:opacity var(--dur-fast) ease, transform var(--dur-mid) var(--ease-spring);position:absolute;inset:0}.connect-email__icon .icon-check{opacity:0;transform:scale(.6)}.connect-email.is-copied .connect-email__icon{color:var(--fg);transform:scale(1.06)}.connect-email.is-copied .icon-copy{opacity:0;transform:scale(.6)}.connect-email.is-copied .icon-check{opacity:1;transform:scale(1)}.connect-status{min-height:1.4em;color:var(--muted);font-size:var(--fs-caption);letter-spacing:var(--track-ui);font-weight:500;display:block}.connect-email.is-copied~.connect-status{color:var(--fg)}.connect-email.is-copy-fail~.connect-status{color:#b42318}.connect-mailto{min-height:2.25rem;color:var(--muted);font-size:var(--fs-ui);letter-spacing:var(--track-ui);text-underline-offset:.28em;transition:color var(--dur-fast) var(--ease-out);align-items:center;font-weight:500;text-decoration:underline 1px;display:inline-flex}.connect-mailto:hover{color:var(--fg)}.connect-channels__title{font-size:var(--fs-ui);letter-spacing:var(--track-cjk-label);color:var(--muted);margin:0 0 .85rem;font-weight:600;line-height:1.35}:lang(en) .connect-channels__title{text-transform:uppercase;letter-spacing:.05em;font-size:var(--fs-caption)}.connect-channel-list{flex-direction:column;gap:.65rem;max-width:22rem;margin:0;padding:0;list-style:none;display:flex}.connect-channel{border:1px solid var(--line);min-height:3.25rem;color:var(--fg);transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:14px;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.1rem;display:flex}.connect-channel:hover{background:color-mix(in srgb, var(--fg) 4%, transparent);border-color:color-mix(in srgb, var(--fg) 18%, transparent)}.connect-channel:active{transform:scale(.985)}.connect-channel__name{font-size:var(--fs-body-sm);letter-spacing:var(--track-ui);font-weight:600}.connect-channel__mark{color:var(--muted);font-size:var(--fs-ui);line-height:1}.connect-channel:hover .connect-channel__mark{color:var(--fg)}.connect-embed{max-width:var(--prose-max);gap:1.75rem}.connect-embed .connect-email{max-width:100%}.connect-embed .connect-channel-list{max-width:none}.connect-embed .connect-channels__title{margin-bottom:.65rem}.connect-embed+.section-title,.section-title+.connect-embed{margin-top:.5rem}.hover-footer{background:var(--bg);width:100%;color:var(--fg);box-shadow:none;border:0;border-radius:0;margin:0;position:relative;overflow:hidden}.hover-footer:before{content:"";z-index:0;pointer-events:none;background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--footer-accent,var(--accent-fill)) 3%, transparent) 60%, color-mix(in srgb, var(--footer-accent,var(--accent-fill)) 6%, transparent) 100%);position:absolute;inset:0}.hover-footer__effect{z-index:0;pointer-events:none;opacity:0;height:320px;transition:opacity .7s cubic-bezier(.16,1,.3,1);position:absolute;bottom:0;left:0;right:0;overflow:hidden}.hover-footer.is-visible .hover-footer__effect{opacity:1}.footer-fade-text{white-space:nowrap;font-family:var(--font-sans);letter-spacing:-.06em;color:var(--footer-fade-color,var(--fg));pointer-events:none;user-select:none;font-size:clamp(100px,15vw,240px);font-weight:700;line-height:.8;position:absolute;bottom:-24px;left:50%;transform:translate(-50%)}.footer-fade-text--sharp{opacity:var(--footer-fade-sharp-opacity,.12);-webkit-mask-image:linear-gradient(#000 0% 30%,#0009 55%,#0000 82%);mask-image:linear-gradient(#000 0% 30%,#0009 55%,#0000 82%)}.footer-fade-text--blur{opacity:var(--footer-fade-blur-opacity,.1);filter:blur(10px);-webkit-mask-image:linear-gradient(#0000 15%,#00000026 35%,#00000080 55%,#000 75%,#0000 100%);mask-image:linear-gradient(#0000 15%,#00000026 35%,#00000080 55%,#000 75%,#0000 100%)}.hover-footer__content{z-index:2;width:min(var(--content-max), calc(100% - (var(--page-x) * 2)));background:0 0;margin:0 auto;padding:96px 0 40px;position:relative}.hover-footer__grid{grid-template-columns:1.3fr 1fr 1.2fr;gap:40px 32px;padding-bottom:48px;display:grid}.hover-footer__brand-name{color:var(--fg);font-family:var(--font-mark);letter-spacing:.02em;font-size:clamp(1.25rem,2vw,1.55rem);font-weight:400;line-height:1.2;display:inline-block}.hover-footer__tagline{color:var(--fg);font-size:var(--fs-body-sm);letter-spacing:var(--track-ui);margin:.85rem 0 0;font-weight:600}.hover-footer__blurb{max-width:18rem;color:var(--footer-muted,var(--muted));font-size:var(--fs-caption);letter-spacing:var(--track-ui);margin:.55rem 0 0;line-height:1.55}.hover-footer__col-title{color:var(--footer-muted,var(--muted));font-size:var(--fs-ui);letter-spacing:var(--track-label);text-transform:none;margin:0 0 1rem;font-weight:600}.hover-footer__links{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.hover-footer__links a{min-height:2rem;color:var(--fg);font-size:var(--fs-caption);letter-spacing:var(--track-ui);opacity:.86;transition:opacity var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);align-items:center;font-weight:500;display:inline-flex}.hover-footer__links a span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hover-footer__links a:hover{opacity:1;color:var(--fg)}.hover-footer__contact{gap:.75rem;display:grid}.hover-footer__contact a{min-height:2.75rem;color:var(--fg);font-size:var(--fs-caption);letter-spacing:var(--track-ui);transition:opacity var(--dur-fast) var(--ease-out);align-content:center;gap:.2rem;display:grid}.hover-footer__contact a:hover{opacity:.72}.hover-footer__contact-label{color:var(--footer-muted,var(--muted));font-size:var(--fs-micro);letter-spacing:var(--track-label)}.hover-footer__contact-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hover-footer__divider{background:var(--line);opacity:.85;height:1px;margin-bottom:1.25rem}.hover-footer__bottom{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-bottom:clamp(100px,16vw,180px);display:flex}.hover-footer__social{flex-wrap:wrap;gap:.65rem;display:flex}.hover-footer__social a{z-index:5;width:40px;height:40px;color:var(--fg);background:color-mix(in srgb, var(--fg) 6%, transparent);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);border-radius:999px;place-items:center;display:grid;position:relative}.hover-footer__social a:hover{background:var(--accent-fill);color:var(--accent-fg)}.hover-footer__social-fallback{font-size:.85rem;font-weight:700;line-height:1}.hover-footer__copy{color:var(--footer-copy,var(--muted));font-size:var(--fs-caption);letter-spacing:var(--track-ui)}.hover-footer__copy-lang{margin-left:.45rem}@media (width<=960px){.hover-footer__grid{grid-template-columns:1fr 1fr;gap:28px 24px}.hover-footer__brand,.hover-footer__col--contact{grid-column:1/-1}.hover-footer__contact{grid-template-columns:1fr 1fr;gap:10px 20px;display:grid}.footer-fade-text{font-size:clamp(64px,12vw,140px)}.hover-footer__effect{height:220px}}@media (width<=640px){.hover-footer__content{width:calc(100% - 32px);padding:40px 0 24px}.hover-footer__grid{grid-template-columns:1fr 1fr;gap:22px 16px}.hover-footer__brand,.hover-footer__col--contact{grid-column:1/-1}.hover-footer__col a,.hover-footer__contact a{align-items:center;min-height:36px;display:flex}.hover-footer__contact a{align-content:center;display:grid}.hover-footer__contact-value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hover-footer__bottom{flex-direction:column;align-items:stretch;padding-bottom:72px}.hover-footer__copy{order:-1}.hover-footer__social a{width:44px;height:44px}.hover-footer__effect{height:120px}.footer-fade-text{font-size:clamp(40px,12vw,72px);bottom:-12px}.footer-fade-text--blur{filter:blur(8px)}}@media (prefers-reduced-motion:reduce){.hover-footer__effect{opacity:1;transition:none}.footer-fade-text--blur{filter:none}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.project-card{--glare:0!important;transform:none!important}.project-card__glare{display:none}.connect-email:active,.lang-slider__opt:active{transform:none}}
