/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-ease:initial}}}@layer theme{:host,:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--color-background);--color-text:var(--color-text);--color-line:var(--color-line);--color-gray:var(--color-gray);--color-current:var(--color-current);--color-pool:var(--color-pool);--color-background-elevated:var(--color-background-elevated);--color-background-media:var(--color-background-media);--font-display:var(--font-display);--font-body:var(--font-body);--font-index:var(--font-index)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.font-display{font-family:var(--font-display)}.font-body{font-family:var(--font-body)}.font-index{font-family:var(--font-index)}.type-display-xl{font-size:var(--text-display-xl);line-height:var(--leading-display-xl);font-optical-sizing:auto}.type-display-xl,.type-project-xl{font-family:var(--font-display);font-weight:800;letter-spacing:var(--tracking-display-xl);text-wrap:balance}.type-project-xl{font-size:var(--text-project-xl);line-height:var(--leading-project-xl);font-optical-sizing:auto}.type-display-italic{font-family:var(--font-body);font-style:italic;font-weight:500}.type-display-lg{font-size:var(--text-display-lg);line-height:var(--leading-display-lg);letter-spacing:var(--tracking-display-lg)}.type-display-lg,.type-display-md{font-family:var(--font-body);font-weight:600}.type-display-md{font-size:var(--text-display-md);line-height:var(--leading-display-md);letter-spacing:var(--tracking-display-md)}.type-heading{font-family:var(--font-body);font-size:var(--text-heading);font-weight:600;line-height:var(--leading-heading)}.type-body-lg{font-size:var(--text-body-lg)}.type-body,.type-body-lg{font-family:var(--font-body);font-weight:400;line-height:var(--leading-body)}.type-body{font-size:var(--text-body)}.type-body-sm{font-family:var(--font-body);font-size:var(--text-body-sm);font-weight:400;line-height:var(--leading-body)}.type-index-lg{font-size:var(--text-index-lg);font-weight:400;line-height:var(--leading-index);letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--color-text)}.type-index,.type-index-lg{font-family:var(--font-index)}.type-index{font-size:var(--text-index);letter-spacing:var(--tracking-index);text-transform:uppercase;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.4}.page-rail{width:100%;max-width:calc(var(--rail-label) + var(--rail-gap) + var(--content-max) + var(--rail-gap) + var(--rail-meta));text-align:left;margin-inline:0;display:grid}.page-rail__body{text-align:left;min-width:0}.dated-row{gap:.45rem;display:grid}.dated-row__body{min-width:0}.education-stack,.experience-groups{flex-direction:column;gap:clamp(3.5rem,7vw,5.75rem);display:flex}.education-stack,.work-now__list{gap:var(--space-block)}.work-now__list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.education-stack :is(h2){margin:0}.dated-row__date{font-family:var(--font-index);font-size:var(--text-index);letter-spacing:var(--tracking-index);text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--text-secondary);font-weight:400}@media (min-width:1024px){.page-rail{grid-template-columns:var(--rail-label) minmax(0,var(--content-max)) var(--rail-meta);column-gap:var(--rail-gap);align-items:start}.page-rail__label{grid-column:1}.page-rail__body{grid-column:2/-1;grid-template-columns:subgrid;display:grid}.page-rail__body>*{grid-column:1}.page-rail__body :has(.dated-row){grid-template-columns:subgrid;grid-column:1/-1;display:grid}.page-rail__body :has(.dated-row)>*{grid-column:1}.page-rail__body :has(.dated-row)>.dated-row,.page-rail__body :has(.dated-row)>:has(.dated-row),.page-rail__body>:has(.dated-row){grid-column:1/-1}.education-stack,.page-rail__body>.education-stack{grid-template-columns:subgrid;grid-column:1/-1;display:grid}.education-stack{align-items:start;column-gap:var(--rail-gap);row-gap:var(--space-block)}.page-rail__body .experience-spine{grid-template-columns:subgrid;grid-column:1/-1;display:grid}.page-rail__body .experience-spine__list,.page-rail__body .work-now__list{display:contents}.experience-groups .dated-row+.dated-row{margin-top:var(--space-block)}.dated-row{grid-template-columns:subgrid;align-items:start;row-gap:0;column-gap:var(--rail-gap);grid-column:1/-1;display:grid}.dated-row>.type-heading{grid-area:1/1;margin:0}.dated-row>.dated-row__date{text-align:left;padding-top:calc((var(--leading-heading) - 1) * var(--text-heading) / 2);padding-left:var(--rail-date-inset);white-space:nowrap;grid-area:1/2;place-self:start;margin:0;line-height:1}.dated-row__extra{grid-area:2/1;margin-top:.75rem}.dated-row__body{grid-column:1}}@supports not (grid-template-columns:subgrid){@media (min-width:1024px){.page-rail{grid-template-columns:var(--rail-label) minmax(0,1fr)}.page-rail__body{grid-column:2;display:block}.page-rail__body :has(.dated-row){display:block}.dated-row{grid-template-columns:minmax(0,1fr) var(--rail-meta);column-gap:var(--rail-gap)}.dated-row>.type-heading{grid-area:1/1}.dated-row__body{grid-column:1}.dated-row>.dated-row__date{padding-left:var(--rail-date-inset);grid-area:1/2}.dated-row__extra{grid-area:2/1}}}.wordmark{font-family:var(--font-display);letter-spacing:-.06em;text-transform:uppercase;font-optical-sizing:auto;font-size:clamp(2.6rem,8vw,5.5rem);font-weight:800;line-height:.78}@media (max-width:767px){.wordmark{font-size:clamp(1.55rem,8vw,2.25rem)}.site-header__mark{font-size:clamp(.775rem,4vw,1.125rem)}.site-header{gap:.65rem}.site-header__tools{gap:.55rem}.site-nav{gap:.45rem}}.hero-stage{min-height:100svh;position:relative}.hero-stage__hit{min-height:calc(100svh - var(--header-offset) - var(--footer-offset));margin-top:var(--header-offset);margin-bottom:var(--footer-offset);color:inherit;cursor:pointer;text-decoration:none;display:block}.hero-stage__inner{min-height:calc(100svh - var(--header-offset) - var(--footer-offset));width:100%;padding-right:calc(var(--page-pad) + var(--safe-right));padding-left:calc(var(--page-pad) + var(--safe-left));justify-content:center}.hero-billboard,.hero-stage__inner{z-index:1;flex-direction:column;display:flex;position:relative}.hero-billboard{font-optical-sizing:auto;max-width:22rem;color:var(--color-text);pointer-events:none;gap:.1em;margin:0;padding-block:.06em}.hero-billboard .hero-line__text{font-family:var(--font-body);letter-spacing:-.015em;text-transform:none;font-size:clamp(1.5rem,2.8vw,2.35rem);font-style:italic;font-weight:500;line-height:1.18}@media (min-width:1024px){.hero-stage__inner{grid-template-columns:minmax(17rem,.36fr) minmax(0,1fr);align-items:center;column-gap:clamp(1.25rem,3.5vw,4rem);display:grid}.hero-billboard{max-width:none}.hero-billboard .hero-line__text{font-size:clamp(1.7rem,2.2vw,2.65rem)}}.section-label{font-family:var(--font-index);font-size:var(--text-index);letter-spacing:var(--tracking-index);text-transform:uppercase;color:var(--color-text);align-items:center;gap:.75rem;font-weight:500;display:inline-flex}.section-label:before{content:"";background:var(--color-current);width:.85rem;height:3px}.site-header{z-index:50;height:var(--header-offset);padding-top:calc(var(--page-pad) + var(--safe-top));padding-right:calc(var(--page-pad) + var(--safe-right));padding-left:calc(var(--page-pad) + var(--safe-left));pointer-events:auto;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex;position:fixed;inset:0 0 auto}.site-header__wash{height:calc(var(--header-offset) + 1.5rem);background:linear-gradient(to bottom,var(--color-background) 0,var(--color-background) 55%,transparent 100%);position:absolute;inset:0 0 auto}@supports (color:color-mix(in lab,red,red)){.site-header__wash{background:linear-gradient(to bottom,var(--color-background) 0,color-mix(in srgb,var(--color-background) 78%,transparent) 55%,transparent 100%)}}.site-header__wash{pointer-events:none}.site-header__mark{z-index:1;white-space:nowrap;min-width:0;font-family:var(--font-shoulders),var(--font-noto-sans),"Noto Sans SC",sans-serif;font-size:clamp(1.3rem,4vw,2.75rem);position:relative}body:has(.work-timeline[data-window-dark=true]) .site-header__mark{color:#fff}.site-header__tools{z-index:1;flex-shrink:0;align-items:center;gap:1.15rem;display:flex;position:relative}.locale-switch{gap:.35rem;display:flex}.locale-switch,.locale-switch button{color:var(--text-secondary);align-items:center}.locale-switch button{cursor:pointer;min-width:1.25rem;min-height:0;font:inherit;letter-spacing:inherit;text-transform:inherit;transition:color var(--duration-fast) var(--ease-hover);background:0 0;border:0;justify-content:center;margin:0;padding-block:.2rem;font-weight:500;display:inline-flex;position:relative}.locale-switch button:before{content:"";position:absolute;inset:-.65rem -.35rem}.locale-switch button[aria-pressed=true]{color:var(--color-text)}@media (hover:hover) and (pointer:fine){.locale-switch button:hover{color:var(--color-text)}}.site-nav{align-items:center;gap:.7rem;display:flex}.site-nav .link-nav{letter-spacing:.015em;text-transform:none;white-space:nowrap;padding-block:.2rem;font-weight:500}.site-nav .link-nav:before{content:"";position:absolute;inset:-.65rem -.4rem}.locale-switch .link-underline:after,.site-nav .link-underline:after{bottom:calc(.2rem - .08em)}.site-mark{left:calc(var(--page-pad) + var(--safe-left));bottom:calc(var(--page-pad) + var(--safe-bottom));z-index:50;pointer-events:auto;text-align:left;font-family:var(--font-index);font-size:var(--text-index);letter-spacing:var(--tracking-index);text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--text-secondary);white-space:nowrap;margin:0;font-weight:400;position:fixed}.site-mark p{margin:0}.experience-spine{position:relative}.experience-spine__list{gap:var(--space-block);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.chapter-flow{width:100%;height:2.5rem;padding-inline:var(--page-pad-left) var(--page-pad);transform-origin:0;transition:transform .28s var(--ease-out);margin:0;display:block;transform:scaleX(0)}.chapter-flow.origin-right{transform-origin:100%}@media (min-width:1024px){.experience-spine:before{content:"";background:var(--color-current);opacity:.35;width:1px;position:absolute;top:.35rem;bottom:.35rem;left:-1.15rem}.experience-spine .dated-row>.type-heading:before{content:"";border:1px solid var(--color-current);background:var(--color-background);border-radius:50%;width:7px;height:7px;transition:transform .15s,background-color .15s;position:absolute;top:.45rem;left:calc(-1.15rem - 3px)}.experience-spine .dated-row>.type-heading{position:relative}.chapter-flow{padding-left:calc(var(--page-pad-left) + var(--rail-label) + var(--rail-gap))}.page-rail__body .experience-spine__list,.page-rail__body .work-now__list{display:contents}}.text-primary{color:var(--color-text)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-accent{color:var(--color-text)}.type-en{line-height:var(--leading-body-en)}.hero-art{z-index:0;opacity:.24;pointer-events:none;width:min(86vw,28rem);position:absolute;top:18%;bottom:22%;right:0}.hero-art img{mix-blend-mode:multiply;object-fit:contain;object-position:right center;filter:contrast(1.12)saturate(.85)}@media (min-width:1024px){.hero-art{opacity:.48;width:100%;height:min(72vh,48rem);position:relative;inset:auto}.hero-art img{object-position:center}}@media (min-width:1600px){.hero-stage__inner{grid-template-columns:minmax(20rem,22vw) minmax(0,1fr)}.hero-art{opacity:.52;height:min(78vh,56rem)}}.project-page{background:var(--color-background);width:100%;overflow:hidden}.project-back,.project-highlight__index,.project-kicker,.project-meta-label,.project-section-label{color:var(--text-tertiary);font-family:var(--font-index);font-size:var(--text-index);letter-spacing:.12em;text-transform:uppercase;margin:0;font-weight:500}.project-back{min-height:2.75rem;color:var(--text-tertiary);flex-shrink:0;align-items:center;text-decoration:none;display:inline-flex;position:relative}.project-back:after{content:"";position:absolute;inset:-.7rem -.45rem}.project-back:visited{color:var(--text-tertiary)}.project-hero{min-height:38.75rem;padding-top:2.875rem;padding-right:calc(var(--page-pad) + var(--safe-right));padding-bottom:2.875rem;padding-left:calc(var(--page-pad-left) + var(--safe-left));grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:1.125rem;display:grid}.project-hero__copy{grid-column:1/4}.project-hero__visual{grid-column:5/10;align-self:stretch;min-height:26.25rem}.project-hero__summary{grid-column:10/-1;align-self:end;padding-bottom:2px}.project-hero--plain{min-height:0}.project-hero--plain .project-hero__copy{grid-column:1/6}.project-hero--plain .project-hero__summary{grid-column:8/-1}.project-hero__title{max-width:12ch;font-family:var(--font-body);letter-spacing:-.055em;color:var(--color-text);margin:.5rem 0 1.125rem;font-size:clamp(2rem,4.1vw,3.25rem);font-weight:600;line-height:1.03}.project-hero__tagline{max-width:23ch;font-family:var(--font-body);letter-spacing:-.03em;margin:0;font-size:clamp(1.0625rem,1.8vw,1.4375rem);font-style:italic;font-weight:500;line-height:1.35}.project-hero__credit{color:var(--text-secondary);font-family:var(--font-body);margin:2.875rem 0 0;font-size:.75rem;line-height:1.5}.project-hero__lede{font-family:var(--font-body);letter-spacing:-.015em;margin:1.125rem 0 2.625rem;font-size:.9375rem;line-height:1.75}.project-hero__summary-meta{border-top:1px solid var(--color-line);color:var(--text-secondary);font-family:var(--font-index);font-size:var(--text-index);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;gap:.75rem;padding-top:.75rem;display:flex}.project-live-well{border:2px solid var(--color-current);background:var(--color-pool);place-items:center;width:100%;height:100%;min-height:26.25rem;display:grid;position:relative;overflow:hidden}.project-live-well:after{content:"";background:var(--color-text);border-radius:50%;width:8px;height:8px;position:absolute;top:23%;right:11%}.project-live-well svg{width:84%;height:84%}.project-svg-line{stroke:var(--color-text);stroke-width:1.5px}.project-svg-line,.project-svg-live{fill:none;vector-effect:non-scaling-stroke}.project-svg-live{stroke:var(--color-current);stroke-width:2px}.project-svg-dot{fill:var(--color-text)}.project-svg-soft{fill:var(--color-background);stroke:var(--color-current);stroke-width:1.2px}.project-svg-text{fill:var(--color-text);font-family:var(--font-index);font-size:10px}.project-svg-muted{fill:var(--text-tertiary);font-family:var(--font-index);font-size:8px}.project-svg-display{fill:var(--color-text);font-family:var(--font-display);letter-spacing:-.04em;font-size:78px;font-weight:800}.project-svg-display--sm{font-size:72px}.project-live-well .project-svg-live{stroke-dasharray:520;stroke-dashoffset:520px;animation:project-current-draw .9s cubic-bezier(.2,.8,.2,1) .12s forwards}.project-switcher{padding-top:var(--header-offset);padding-right:calc(var(--page-pad) + var(--safe-right));padding-bottom:.35rem;padding-left:calc(var(--page-pad-left) + var(--safe-left));border-bottom:1px solid var(--color-line);flex-wrap:nowrap;justify-content:space-between}.project-switcher,.project-switcher__list{align-items:center;gap:1.25rem 1.625rem;display:flex}.project-switcher__list{flex-wrap:wrap;flex:1;justify-content:flex-end;min-width:0}.project-switcher__item{min-height:2.75rem;font-family:var(--font-index);font-size:var(--text-index);letter-spacing:.04em;white-space:nowrap;align-items:center;text-decoration:none;display:inline-flex}.project-switcher__item,.project-switcher__item:visited{color:var(--text-tertiary)}.project-switcher__item[aria-current=page]{color:var(--color-text);text-decoration:underline;-webkit-text-decoration-color:var(--color-current);text-decoration-color:var(--color-current);text-underline-offset:7px;font-weight:600;text-decoration-thickness:2px}.project-brief,.project-result{padding:6.5rem calc(var(--page-pad) + var(--safe-right)) 6.5rem calc(var(--page-pad-left) + var(--safe-left));border-bottom:1px solid var(--color-line);grid-template-columns:2fr 5fr 3fr;gap:1.75rem;display:grid}.project-brief__main p,.project-highlight__copy p,.project-result__copy p{font-family:var(--font-body);letter-spacing:-.015em;margin:0;font-size:1.0625rem;line-height:1.72}.project-contrib,.project-result__list{margin:0;padding:0;list-style:none}.project-contrib li,.project-result__list li{border-bottom:1px solid var(--color-line);color:var(--text-secondary);font-family:var(--font-body);padding:.7rem 0;font-size:.8125rem;line-height:1.5}.project-contrib li:first-child,.project-result__list li:first-child{border-top:1px solid var(--color-line)}.project-meta-label{margin-bottom:.75rem}.project-highlight{min-height:32.5rem;padding:5.25rem calc(var(--page-pad) + var(--safe-right)) 5.25rem calc(var(--page-pad-left) + var(--safe-left));border-bottom:1px solid var(--color-line);grid-template-columns:repeat(12,minmax(0,1fr));align-items:center;gap:1.125rem;display:grid}.project-highlight__visual{grid-column:1/8;min-height:24.375rem}.project-highlight__copy{grid-column:9/-1}.project-highlight--flip .project-highlight__visual{order:2;grid-column:6/-1}.project-highlight--flip .project-highlight__copy{order:1;grid-column:1/5}.project-highlight__title{font-family:var(--font-body);letter-spacing:-.045em;margin:.75rem 0 1.5rem;font-size:clamp(1.5625rem,3.4vw,2.625rem);font-weight:500;line-height:1.12}.project-proof{border-top:1px solid var(--color-text);align-items:baseline;gap:.625rem;margin-top:2.375rem;padding-top:.875rem;display:flex}.project-proof strong{font-family:var(--font-display);letter-spacing:-.045em;font-size:clamp(2.75rem,7vw,4.875rem);font-weight:800;line-height:.86}.project-proof span{color:var(--text-secondary);font-size:.75rem}.project-artifact,.project-visual{width:100%;height:100%}.project-artifact{border-top:1px solid var(--color-text);border-bottom:1px solid var(--color-text);background:var(--color-background);align-content:center;min-height:24.375rem;padding:clamp(1.75rem,5vw,3.625rem);display:grid}.project-artifact--paper{border-left:0;border-right:0}.project-artifact--pool{background:var(--color-pool);border:0}.project-dual{grid-template-columns:1fr 4.375rem 1fr;align-items:center;gap:1rem;display:grid}.project-person{border-top:2px solid var(--color-text);border-bottom:1px solid var(--color-text);padding:1.375rem 0}.project-person b{margin-bottom:.625rem;font-size:1.1875rem;display:block}.project-person span{color:var(--text-secondary);font-size:.75rem;line-height:1.55}.project-bridge{background:var(--color-current);height:1px;position:relative}.project-bridge:after{content:"";background:var(--color-current);border-radius:50%;width:8px;height:8px;position:absolute;top:-4px;right:-1px}.project-timeline{grid-template-columns:repeat(3,1fr);align-items:start;display:grid}.project-phase{border-top:2px solid var(--color-current);padding:1.875rem 1.125rem 0 0;position:relative}.project-phase:before{content:"";border:1px solid var(--color-current);background:var(--color-background);border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:0}.project-phase b{font-size:1.125rem;display:block}.project-phase span{color:var(--text-secondary);margin-top:.625rem;font-size:.75rem;line-height:1.5;display:block}.project-flow{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.project-flow__step{border-top:1px solid var(--color-text);border-bottom:1px solid var(--color-text);text-align:center;flex:1;min-width:0;padding:1rem .375rem;font-size:.6875rem}.project-flow__arrow{color:var(--color-current);font-size:1.125rem}.project-metric-pair{grid-template-columns:1fr 1fr;gap:2rem;display:grid}.project-metric-pair div{border-top:2px solid var(--color-text);padding-top:1rem}.project-metric-pair strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(3.625rem,9vw,7rem);line-height:.9;display:block}.project-metric-pair span{color:var(--text-secondary);margin-top:.625rem;font-size:.75rem;display:block}.project-output-stack{display:grid}.project-output-stack div{border-top:1px solid var(--color-text);grid-template-columns:2.75rem 1fr;gap:1.125rem;padding:1.25rem 0;display:grid}.project-output-stack div:last-child{border-bottom:1px solid var(--color-text)}.project-output-stack i{color:var(--color-current);font-size:.6875rem;font-style:normal}.project-output-stack b{font-size:1.0625rem;font-weight:500}.project-segments{grid-template-columns:repeat(4,1fr);align-items:end;gap:.5625rem;min-height:16.25rem;display:grid}.project-segments:has(.project-segment:nth-child(3):last-child){grid-template-columns:repeat(3,1fr)}.project-segment{border:1px solid var(--color-text);background:var(--color-background);white-space:pre-line;align-items:flex-end;padding:.875rem .625rem;font-size:.6875rem;display:flex}.project-segment:first-child{border:2px solid var(--color-current);height:100%}.project-segment:nth-child(2){height:70%}.project-segment:nth-child(3){height:52%}.project-segment:nth-child(4){height:40%}.project-factor{grid-template-columns:1fr 2fr;align-items:end;gap:1.75rem;display:grid}.project-factor__value{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(5.375rem,13vw,9.375rem);font-weight:800;line-height:.75}.project-factor__copy{border-top:2px solid var(--color-text);padding-top:.875rem}.project-factor__copy b{font-size:1.125rem;display:block}.project-factor__copy span{color:var(--text-secondary);margin-top:.5rem;font-size:.75rem;display:block}.project-result{padding-top:5.625rem;padding-bottom:5.625rem}.project-next{padding:5rem calc(var(--page-pad) + var(--safe-right)) calc(var(--footer-offset) + 5.5rem) calc(var(--page-pad-left) + var(--safe-left));border-bottom:1px solid var(--color-text);grid-template-columns:2fr 8fr;gap:1.75rem;display:grid}.project-next__link{min-height:2.75rem;color:inherit;align-items:center;text-decoration:none;display:inline-flex}.project-next__link:visited{color:inherit}.project-next__title{font-family:var(--font-index);font-size:var(--text-index);letter-spacing:.04em;font-weight:500;line-height:1.35}.project-story>.reveal{min-width:0}@media (max-width:43.75rem){.project-hero{min-height:0;padding-top:1.5rem;padding-right:calc(var(--page-pad) + var(--safe-right));padding-bottom:calc(var(--footer-offset) + 1.5rem);padding-left:calc(var(--page-pad-left) + var(--safe-left));grid-template-columns:1fr}.project-hero__copy,.project-hero__summary,.project-hero__visual{grid-column:1}.project-hero__title{margin-bottom:.75rem}.project-hero__credit{margin-top:1.75rem}.project-hero__visual{min-height:18.75rem;margin-top:2.125rem}.project-live-well{min-height:18.75rem}.project-hero__summary{margin-top:1.875rem}.project-switcher{padding-inline:calc(var(--page-pad-left) + var(--safe-left)) calc(var(--page-pad) + var(--safe-right));flex-direction:column;align-items:stretch;gap:0;display:flex}.project-switcher__list{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:stretch;gap:0;display:grid}.project-switcher__item{justify-content:center}.project-brief,.project-result{padding:4.25rem calc(var(--page-pad) + var(--safe-right)) 4.25rem calc(var(--page-pad-left) + var(--safe-left));grid-template-columns:1fr;gap:1.625rem}.project-highlight{min-height:0;padding:4.125rem calc(var(--page-pad) + var(--safe-right)) 4.125rem calc(var(--page-pad-left) + var(--safe-left));grid-template-columns:1fr}.project-highlight--flip .project-highlight__copy,.project-highlight--flip .project-highlight__visual,.project-highlight__copy,.project-highlight__visual{order:0;grid-column:1}.project-highlight__copy{margin-top:1.625rem}.project-artifact,.project-highlight__visual{min-height:18.125rem}.project-dual{grid-template-columns:1fr}.project-bridge{width:1px;height:2.125rem;margin-left:.75rem}.project-bridge:after{top:auto;bottom:-1px;right:-4px}.project-flow{flex-direction:column;align-items:stretch}.project-flow__arrow{text-align:center;transform:rotate(90deg)}.project-factor,.project-metric-pair{grid-template-columns:1fr}.project-segments{min-height:13.125rem}.project-next{padding:3.875rem calc(var(--page-pad) + var(--safe-right)) calc(var(--footer-offset) + 4.5rem) calc(var(--page-pad-left) + var(--safe-left));grid-template-columns:1fr}}.focus-ring{outline:2px solid var(--focus-ring);outline-offset:2px}:where(a,button,input,textarea,select,summary,[tabindex]:not([tabindex="-1"])):focus{outline:none}:where(a,button,input,textarea,select,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.link-base{transition:color var(--duration-fast) var(--ease-hover);text-decoration:none}.link-base,.link-base:hover{color:var(--color-text)}.link-underline{text-decoration:none;position:relative}.link-underline:after{content:"";transform-origin:0;background-color:currentColor;width:100%;height:2px;transition:transform .15s;position:absolute;bottom:calc(.7rem - .14em);left:0;transform:scaleX(0)}.link-underline:focus-visible:after,.link-underline[aria-current=location]:after,.link-underline[aria-current=page]:after,.link-underline[aria-current=true]:after,.link-underline[aria-pressed=true]:after{background-color:currentColor;transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.link-underline:hover:after{transform:scaleX(1)}}.link-nav{color:var(--color-text);transition:color var(--duration-fast) var(--ease-hover),transform var(--duration-instant) var(--ease-hover);text-decoration:none}.link-nav:focus-visible,.link-nav:hover{color:var(--color-text)}.link-nav:active{transform:scale(.97)}.link-external{color:var(--color-text);transition:color var(--duration-fast) var(--ease-hover);align-items:center;gap:.35em;text-decoration:none;display:inline-flex}.link-external:focus-visible,.link-external:hover{color:var(--text-secondary)}.link-text{transition:color var(--duration-fast) var(--ease-hover);text-decoration:none;position:relative}.link-text,.link-text:hover{color:var(--color-text)}.link-text:after{content:"";transform-origin:0;width:100%;height:1px;transition:transform var(--duration-fast) var(--ease-hover);background-color:currentColor;position:absolute;bottom:-.08em;left:0;transform:scaleX(0)}@media (hover:hover) and (pointer:fine){.link-text:focus-visible:after,.link-text:hover:after{transform:scaleX(1)}}@media (hover:none),(pointer:coarse){.link-text:after{opacity:.45;transform:scaleX(1)}}.index-list{position:relative}.index-row{color:inherit;text-decoration:none}.index-row__body{border-top:1px solid var(--color-line);padding-block:1.35rem;display:block;position:relative}.index-row:last-child .index-row__body{border-bottom:1px solid var(--color-line)}.index-row__body:after{content:"";background:var(--color-current);transform-origin:0;width:100%;height:1px;transition:transform var(--duration-fast) var(--ease-hover);position:absolute;bottom:0;left:0;transform:scaleX(0)}@media (min-width:768px){.index-row__body{padding-block:1.6rem}}@media (min-width:1024px){.index-row__body{padding-block:1.85rem}.index-row>.dated-row__date{padding-top:2.05rem}}@media (hover:hover) and (pointer:fine){.index-row:focus-visible .index-row__body:after,.index-row:hover .index-row__body:after{transform:scaleX(1)}}.index-row__content{min-width:0;padding-bottom:.35rem}.index-row__meta{color:var(--text-secondary)}.index-row__arrow{display:none}.index-row__description{color:var(--color-text);margin-top:.45rem}.branch-list{padding-left:1.75rem;position:relative}.branch-list:before{content:"";background:var(--color-current);width:1px;position:absolute;top:.55rem;bottom:.55rem;left:.28rem}@supports (color:color-mix(in lab,red,red)){.branch-list:before{background:color-mix(in srgb,var(--color-current) 45%,transparent)}}.branch-item{position:relative}.branch-item:before{content:"";border:1px solid var(--color-current);background:var(--color-background);width:.55rem;height:.55rem;box-shadow:0 0 0 4px var(--color-background);border-radius:50%;position:absolute;top:.7rem;left:-1.75rem}.reveal{opacity:0;transition:opacity .24s var(--ease-out),transform .24s var(--ease-out);transform:translateY(.7rem)}.reveal--left{transform:translate(-1.25rem)}.reveal--right{transform:translate(1.25rem)}.reveal.is-in{opacity:1;transform:none}.reveal--scale{transform:scale(.95)}.reveal--hold{opacity:1;transform:none}.experience-enter>.type-index{opacity:0}.experience-enter.is-in>.type-index{animation:copy-rise .22s var(--ease-out) both}.experience-enter .dated-row{opacity:0;transform:translate(-.9rem)}.experience-enter.is-in .dated-row{animation:current-in .26s var(--ease-out) both}.experience-enter.is-in .dated-row:nth-child(2){animation-delay:70ms}.experience-enter.is-in .dated-row:nth-child(3){animation-delay:.14s}@media (min-width:1024px){.experience-spine:before{transform-origin:top;transform:scaleY(0)}.reveal.is-in .experience-spine:before{transition:transform .3s var(--ease-out);transform:scaleY(1)}}.hero-line{margin-block:-.18em;padding-block:.18em;overflow:hidden}.hero-billboard.is-flow .hero-line{overflow:visible}.hero-letter{transform-origin:50% 78%;display:inline-block}.hero-billboard.is-stirring .hero-letter{will-change:transform}.hero-line__text{animation:line-uncover var(--duration-slow) var(--ease-out) both;display:block}.hero-billboard .hero-line:nth-child(2) .hero-line__text{animation-delay:70ms}.pointer-shift{display:block}.experience-enter.is-in .dated-row__extra{transition:transform .18s var(--ease-in-out)}@media (hover:hover) and (pointer:fine){.reveal.is-in .dated-row:focus-within>.type-heading:before,.reveal.is-in .dated-row:hover>.type-heading:before{background-color:var(--color-current);transform:scale(1.12)}.experience-enter.is-in .dated-row:focus-within .dated-row__extra,.experience-enter.is-in .dated-row:hover .dated-row__extra{transform:translate(.4rem)}}.chapter-flow.is-in{transform:scaleX(1)}.chapter-flow .draw-stroke{stroke-dashoffset:1px;animation:none}.chapter-flow.is-in .draw-stroke{animation:draw-path .28s var(--ease-out) both}.chapter-stack{overflow-x:clip}.chapter-scene__surface{background-color:var(--color-background)}#hero .chapter-scene__surface{background-color:#0000}@media (min-width:1024px){@media (prefers-reduced-motion:no-preference){.chapter-stack{timeline-scope:--about-in,--experience-in,--projects-in}#about.chapter-scene,#experience.chapter-scene,#hero.chapter-scene,#projects.chapter-scene{top:var(--scene-top,var(--header-offset));position:sticky}#about.chapter-scene,#experience.chapter-scene,#projects.chapter-scene{flex-direction:column;display:flex}#about.chapter-scene .chapter-scene__surface,#experience.chapter-scene .chapter-scene__surface,#projects.chapter-scene .chapter-scene__surface{flex:1 0 auto;width:100%}#hero.chapter-scene{top:var(--scene-top,0);z-index:1}#about.chapter-scene{z-index:2;min-height:calc(100svh - var(--header-offset));view-timeline-name:--about-in;view-timeline-axis:block}#experience.chapter-scene{z-index:3;view-timeline-name:--experience-in;view-timeline-axis:block}#projects.chapter-scene{z-index:4;view-timeline-name:--projects-in;view-timeline-axis:block}#content{z-index:5;background-color:var(--color-background);position:relative}.chapter-stack .chapter-flow{display:none}.chapter-stack .experience-enter .dated-row,.chapter-stack .experience-enter>.type-index,.chapter-stack .experience-spine:before,.chapter-stack .reveal,.chapter-stack .reveal.is-in{opacity:1;transition:none;animation:none;transform:none}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){#hero .chapter-scene__surface{transform-origin:50% 22%;animation:scene-recede linear both;animation-timeline:--about-in;animation-range:entry cover 40%}#about .chapter-scene__surface{transform-origin:50% 18%;animation:scene-recede linear both;animation-timeline:--experience-in;animation-range:entry cover 40%}#experience .chapter-scene__surface{animation:scene-cover-left linear both,scene-dim linear both;animation-timeline:--experience-in,--projects-in;animation-range:entry cover 40%,entry cover 40%}#projects .chapter-scene__surface{animation:scene-cover-right linear both;animation-timeline:--projects-in;animation-range:entry cover 40%}}}}.draw-stroke{stroke-dasharray:1;stroke-dashoffset:1px;animation:draw-path 1.8s var(--ease-out) .2s both}@keyframes line-uncover{0%{transform:translateY(108%)}to{transform:translate(0)}}@keyframes copy-rise{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:none}}.project-back:active,.project-next__link:active,.project-switcher__item:active{transform:scale(.97)}.project-back:focus-visible,.project-back:hover,.project-switcher__item:focus-visible,.project-switcher__item:hover{color:var(--color-text)}.project-next__link:focus-visible .project-next__title,.project-next__link:hover .project-next__title{color:var(--color-current)}@keyframes project-current-draw{to{stroke-dashoffset:0}}@keyframes current-in{0%{opacity:0;transform:translate(-.9rem)}to{opacity:1;transform:none}}@keyframes scene-recede{to{opacity:.4;transform:scale(.96)}}@keyframes scene-dim{to{opacity:.4}}@keyframes scene-cover-left{0%{transform:translate(-100%)}to{transform:none}}@keyframes scene-cover-right{0%{transform:translate(100%)}to{transform:none}}@keyframes draw-path{to{stroke-dashoffset:0}}@media (scripting:none){.chapter-flow,.dated-row,.experience-enter>.type-index,.hero-letter,.hero-line__text,.reveal{opacity:1;animation:none;transform:none}.chapter-flow .draw-stroke{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.chapter-flow,.chapter-scene__surface,.chapter-stack .chapter-flow,.dated-row,.dated-row__extra,.draw-stroke,.experience-spine .dated-row>.type-heading:before,.experience-spine:before,.flow-rule,.hero-letter,.hero-line__text,.index-row__arrow,.index-row__body:after,.link-base,.link-text:after,.link-underline:after,.locale-switch button:after,.pointer-shift,.project-back,.project-next__link,.project-switcher__item,.reveal{transition:none;animation:none}.index-row__body:after,.link-text:after{opacity:.45;transform:scaleX(1)}.link-underline:after{opacity:1;transform:scaleX(0)}.link-underline:focus-visible:after,.link-underline[aria-current=location]:after,.link-underline[aria-current=page]:after,.locale-switch button[aria-pressed=true]:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.link-underline:hover:after{transform:scaleX(1)}}.chapter-flow,.chapter-flow.is-in,.dated-row,.experience-enter>.type-index,.hero-letter,.hero-line__text,.reveal{opacity:1}.dated-row__extra{transform:none}.chapter-flow .draw-stroke,.draw-stroke{stroke-dashoffset:0}.project-live-well .project-svg-live{stroke-dashoffset:0;animation:none}.chapter-flow,.chapter-flow.is-in,.experience-spine:before,.flow-rule{transform:none}.chapter-scene__surface{opacity:1;transform:none}}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-x-0{inset-inline:0}.bottom-0{bottom:0}.z-\[1\]{z-index:1}.col-span-12{grid-column:span 12/span 12}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-\[var\(--space-element\)\]{margin-top:var(--space-element)}.mt-\[var\(--space-tight\)\]{margin-top:var(--space-tight)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-\[var\(--space-block\)\]{margin-bottom:var(--space-block)}.mb-\[var\(--space-element\)\]{margin-bottom:var(--space-element)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.h-44{height:calc(var(--spacing) * 44)}.h-\[18rem\]{height:18rem}.h-\[min\(72vh\,30rem\)\]{height:min(72vh,30rem)}.h-full{height:100%}.min-h-\[100svh\]{min-height:100svh}.min-h-full{min-height:100%}.w-auto{width:auto}.w-full{width:100%}.max-w-\[var\(--content-max\)\]{max-width:var(--content-max)}.shrink{flex-shrink:1}.origin-right{transform-origin:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-\[var\(--space-element\)\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-element) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-element) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[var\(--space-tight\)\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--space-tight) * var(--tw-space-y-reverse));margin-block-end:calc(var(--space-tight) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-\[var\(--grid-gutter\)\]{column-gap:var(--grid-gutter)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-\[var\(--space-element\)\]{row-gap:var(--space-element)}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-\[var\(--color-line\)\]{border-color:var(--color-line)}.px-\[var\(--page-pad\)\]{padding-inline:var(--page-pad)}.py-\[var\(--space-section\)\]{padding-block:var(--space-section)}.pt-1{padding-top:var(--spacing)}.pt-\[var\(--space-element\)\]{padding-top:var(--space-element)}.pb-\[var\(--space-section\)\]{padding-bottom:var(--space-section)}.pl-\[var\(--page-pad-left\)\]{padding-left:var(--page-pad-left)}.text-\[var\(--color-current\)\]{color:var(--color-current)}.text-\[var\(--color-text\)\]{color:var(--color-text)}.lowercase{text-transform:lowercase}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.ring,.shadow{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media (min-width:48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:64rem){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:mb-0{margin-bottom:0}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:border-0{border-style:var(--tw-border-style);border-width:0}.lg\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.lg\:pt-0{padding-top:0}.lg\:pt-1{padding-top:var(--spacing)}.lg\:pt-\[var\(--space-element\)\]{padding-top:var(--space-element)}}}:root{--color-background:#fff;--color-text:#0b0b0b;--color-gray:#3a3f4a;--color-current:#1428d4;--color-pool:#d2d8ff;--color-line:var(--color-text)}@supports (color:color-mix(in lab,red,red)){:root{--color-line:color-mix(in srgb,var(--color-text) 18%,transparent)}}:root{--text-secondary:var(--color-gray);--text-tertiary:var(--color-text)}@supports (color:color-mix(in lab,red,red)){:root{--text-tertiary:color-mix(in srgb,var(--color-text) 57%,transparent)}}:root{--color-background-elevated:var(--color-current)}@supports (color:color-mix(in lab,red,red)){:root{--color-background-elevated:color-mix(in srgb,var(--color-current) 8%,var(--color-background))}}:root{--color-background-media:var(--color-pool);--font-en:var(--font-franklin),sans-serif;--font-zh:var(--font-noto-sans),"Noto Sans SC",sans-serif;--font-display:var(--font-en);--font-body:var(--font-en);--font-index:var(--font-en);--text-display-xl:clamp(3.25rem,13vw,10.5rem);--text-project-xl:clamp(2.5rem,7.4vw,7.25rem);--text-display-lg:clamp(1.35rem,2.2vw,1.75rem);--text-display-md:1.125rem;--text-heading:1.0625rem;--text-body-lg:1.0625rem;--text-body:.9375rem;--text-body-sm:.875rem;--text-index-lg:.9375rem;--text-index:.6875rem;--leading-display-xl:.86;--leading-project-xl:.88;--leading-display-lg:1.2;--leading-display-md:1.35;--leading-heading:1.35;--leading-body:1.65;--leading-body-en:1.5;--leading-index:1;--tracking-display-xl:-.045em;--tracking-display-lg:-.02em;--tracking-display-md:-.015em;--tracking-index:.16em;--space-section:clamp(5.5rem,12vw,9rem);--space-block:clamp(2rem,4vw,3.5rem);--space-element:clamp(.85rem,1.6vw,1.35rem);--space-tight:.4rem;--container-max:58rem;--container-wide:58rem;--content-max:38rem;--content-narrow:32rem;--rail-label:8.5rem;--rail-meta:10rem;--rail-gap:1.75rem;--rail-date-inset:.75rem;--page-pad:clamp(1.15rem,2.6vw,1.75rem);--page-pad-left:var(--page-pad);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--sticky-mid:calc(var(--header-offset) + var(--space-section));--grid-columns:12;--grid-gutter:1.25rem;--header-height:clamp(4.75rem,9vw,7.5rem);--header-offset:calc(var(--header-height) + var(--safe-top));--footer-offset:calc(var(--page-pad) + 1.35rem + var(--safe-bottom));--spine-inset:.35rem;--duration-instant:.12s;--duration-fast:.18s;--duration-normal:.28s;--duration-slow:.62s;--ease-hover:cubic-bezier(.25,.1,.25,1);--ease-out:cubic-bezier(.19,1,.22,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--ease-default:var(--ease-out);--focus-ring:var(--color-current)}@supports (color:color-mix(in lab,red,red)){:root{--focus-ring:color-mix(in srgb,var(--color-current) 75%,transparent)}}@media (max-width:767px){:root{--header-height:4.5rem;--space-section:clamp(4rem,16vw,6rem);--text-display-xl:clamp(2.85rem,16vw,4.25rem);--text-project-xl:clamp(2.35rem,12vw,3.5rem);--text-body:1rem}}@media (prefers-reduced-motion:reduce){:root{--duration-instant:0s;--duration-fast:0s;--duration-normal:0s;--duration-slow:0s}}.route-transition-bridge,.route-transition-bridge__snapshot{z-index:1000;pointer-events:none;position:fixed;inset:0;overflow:hidden}.route-transition-bridge__snapshot{opacity:1;width:100vw;height:100dvh;transition:opacity .18s cubic-bezier(.215,.61,.355,1)}.route-transition-bridge__snapshot--fading{opacity:0}.route-transition-bridge__snapshot,.route-transition-bridge__snapshot *{pointer-events:none!important}.route-transition-bridge__snapshot>.route-transition-snapshot-content{z-index:5;background-color:var(--color-background);position:relative}@media (prefers-reduced-motion:reduce){.route-transition-bridge__snapshot{transition-duration:.01ms}}.site-boot{z-index:2000;background:var(--color-background);color:var(--color-text);opacity:0;pointer-events:none;transition:opacity .18s var(--ease-out);align-content:center;place-items:center;gap:.85rem;display:grid;position:fixed;inset:0}.site-boot[data-visible=true]{opacity:1}.site-boot__wordmark{font-family:var(--font-shoulders),var(--font-noto-sans),"Noto Sans SC",sans-serif;letter-spacing:-.04em;text-transform:uppercase;font-size:1.25rem;font-weight:800;line-height:.8}.site-boot__indicator{opacity:.52;border:1px solid;border-radius:50%;width:.35rem;height:.35rem;animation:site-boot-pulse 1.2s ease-in-out infinite}@keyframes site-boot-pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:.7;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.site-boot{transition:none}.site-boot__indicator{animation:none}}.work-page--entry .work-timeline:not([data-window-dark=true]){background-color:#f3f3f1;transition:background-color .32s}.work-page--entry .work-timeline__bottom-nav,body:has(.work-page--entry) .site-header{opacity:.45}.work-page--entry .work-timeline__hero-visual{opacity:.18;visibility:hidden;transform:translateY(8px)}.work-page--entry .work-timeline__life-entry-group{opacity:.08;transform:translateY(14px)}.work-page--entry.work-page--entry-active .work-timeline__hero-visual{visibility:visible;will-change:opacity,transform;animation:work-entry-window .38s cubic-bezier(.22,1,.36,1) both}.work-page--entry.work-page--entry-active .work-timeline__life-entry-group{will-change:opacity,transform;animation:work-entry-timeline .46s cubic-bezier(.22,1,.36,1) .11s both}.work-page--entry.work-page--entry-active .work-timeline__bottom-nav,body:has(.work-page--entry.work-page--entry-active) .site-header{will-change:opacity;animation:work-entry-foundation .14s cubic-bezier(.22,1,.36,1) both}.work-page--entry.work-page--entry-active .work-timeline:not([data-window-dark=true]){background-color:#fff}@keyframes work-entry-window{0%{opacity:.18;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes work-entry-timeline{0%{opacity:.08;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes work-entry-foundation{0%{opacity:.45}to{opacity:1}}@media (prefers-reduced-motion:reduce){.work-page--entry.work-page--entry-active .work-timeline__hero-visual,.work-page--entry.work-page--entry-active .work-timeline__life-entry-group{opacity:1;transform:none;animation:none!important}.work-page--entry.work-page--entry-active .work-timeline__bottom-nav,body:has(.work-page--entry.work-page--entry-active) .site-header{opacity:1;animation:none!important}.work-page--entry.work-page--entry-active .work-timeline:not([data-window-dark=true]){background-color:#fff;transition:none}}.work-timeline{--work-bg:#fff;--work-ink:#303033;--work-muted:#858486;--work-faint:#b9b7b7;--work-route:#dedbdc;--work-surface-hover:#17160f09;--work-accent:#3957ff;--work-detail-ink:#262b25;--work-detail-muted:#6d746b;--work-detail-body:#50544e;--work-detail-role:#62675f;--work-detail-title-family:var(--font-display);--work-detail-meta-family:var(--font-index);--work-detail-body-family:var(--font-body);--work-detail-title-size:var(--work-type-primary-size);--work-detail-title-weight:500;--work-detail-title-leading:1.12;--work-detail-title-tracking:-.025em;--work-detail-meta-size:.72rem;--work-detail-meta-leading:1.55;--work-detail-role-size:.75rem;--work-detail-role-weight:500;--work-detail-role-leading:1.4;--work-detail-artifact-title-size:.875rem;--work-detail-artifact-title-weight:500;--work-detail-artifact-title-leading:1.45;--work-detail-artifact-body-size:.875rem;--work-detail-artifact-body-leading:1.65;--year-column:64px;--axis-column:16px;--timeline-entry-offset:0px;--timeline-axis-x:calc(var(--timeline-entry-offset) + var(--year-column) + var(--axis-column) / 2);--timeline-route-left:calc(var(--timeline-axis-x) - .5px);--axis-center:calc(var(--year-column) + var(--axis-column) / 2);--content-gutter:32px;--timeline-lead-in:30px;--work-type-primary-size:16px;--work-type-body-size:15px;--work-type-small-size:13px;--work-type-title-weight:600;--work-type-role-weight:500;--work-type-body-weight:400;--work-type-title-leading:1.25;--work-type-role-leading:1.35;--work-type-body-leading:1.55;--work-type-artifact-leading:1.5;--work-type-title-tracking:-.02em;--work-type-body-tracking:-.01em;--work-type-artifact-tracking:0;--experience-text-gap:6px;--experience-heading-gap:0px;--experience-description-gap:2px;--work-intro-text-gap:0px;--work-intro-copy-max-width:460px;--work-copy-max-width:560px;--work-artifact-max-width:457px;--work-experience-copy-max-width:var(--work-copy-max-width);--work-artifact-copy-max-width:var(--work-artifact-max-width);--work-closing-copy-max-width:735px;--work-closing-copy-width:221px;--work-skills-width:calc(4 * 36px + 3 * 10px);--work-skills-anchor-width:calc(var(--work-copy-max-width) - 15px);--work-folio-width:560px;--work-folio-gap:48px;--work-window-width:197px;--work-window-height:295.5px;--window-shade:0;--window-back-brightness:1;--window-shutter-brightness:1;--window-front-brightness:1;--window-shutter-offset:-57%;--window-front-shade-opacity:0;--space-overview-to-artifact:10px;--space-artifact-copy:2px;--space-artifact-group:36px;--space-artifact-to-artifact:10px;--closing-terminal-offset:3px;isolation:isolate;background:var(--work-bg);min-height:100svh;color:var(--work-ink);font-family:var(--font-body),"Noto Sans SC",sans-serif;-webkit-font-smoothing:antialiased;padding-top:70px;padding-bottom:0;font-size:16px;line-height:1.55;position:relative;overflow:clip}.work-timeline *,.work-timeline :after,.work-timeline :before{box-sizing:border-box}.work-timeline a{color:inherit;text-decoration:none}.work-timeline[data-window-dark=true]{--work-bg:#191817;--work-ink:#f2efe9;--work-muted:#7d7c7c;--work-route:#5e5c5c;--work-surface-hover:#ffffff0b}.work-timeline__bottom-nav,.work-timeline__top-composition{z-index:1;position:relative}:lang(en) .work-timeline{--experience-heading-gap:6.4px}:lang(zh) .work-timeline{--experience-heading-gap:9.4px}.work-timeline[data-window-dark=true] .work-timeline__artifact-description,.work-timeline[data-window-dark=true] .work-timeline__closing-title,.work-timeline[data-window-dark=true] .work-timeline__experience-description,.work-timeline[data-window-dark=true] .work-timeline__experience-role,.work-timeline[data-window-dark=true] .work-timeline__experience-title,.work-timeline[data-window-dark=true] .work-timeline__intro-copy p{color:#b9b8b6}.work-timeline[data-window-dark=true] .work-timeline__closing-title,.work-timeline[data-window-dark=true] .work-timeline__experience-title{color:#f2efe9}.work-timeline[data-window-dark=true] .work-timeline__artifact-title{color:#e8e6e3}.work-timeline[data-window-dark=true] .work-timeline__artifact-description{color:#a3a2a0}.work-timeline[data-window-dark=true] .work-timeline__bottom-nav:before{background:linear-gradient(to bottom,#19181700 0,#191817c2 48%,var(--work-bg) 100%)}.work-timeline__top-composition{width:min(1320px,100%);margin-inline:auto;display:block;position:relative}.work-timeline__identity{z-index:12;width:218px;color:var(--work-muted);font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.13em;text-transform:uppercase;flex-direction:column;gap:4px;margin-left:0;padding:16px 0 16px 30px;font-size:11px;line-height:1.5;display:flex;position:absolute;top:0;left:clamp(38px,4.9vw,102px)}.work-timeline__identity:before{content:"";background-image:radial-gradient(circle,#d8d4dd .9px,#0000 1px);background-position:top;background-size:4px 4px;width:8px;position:absolute;top:0;bottom:0;left:0}.work-timeline__identity-name{color:var(--work-ink);letter-spacing:.16em;font-size:12px}.work-timeline__identity-position{color:#a4a1a2}.work-timeline__identity-email{letter-spacing:.06em;text-transform:none;width:fit-content;margin-top:4px;font-size:10px;transition:color .18s;color:#a4a1a2!important}.work-timeline__identity-email:focus-visible,.work-timeline__identity-email:hover{color:var(--work-accent)!important}.work-timeline__hero-visual{width:var(--work-window-width);height:var(--work-window-height);isolation:isolate;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;margin:0 auto;position:relative;overflow:visible}.work-timeline__hero-visual[data-dragging=true]{cursor:grabbing}.work-timeline__window-scene{isolation:isolate;filter:drop-shadow(0 14px 22px #41393117);width:100%;height:100%;display:block;position:relative}.work-timeline__window-sky{z-index:0;clip-path:inset(19.667% 19.5% 27.222% 19.333% round 25.333% 25.333% 16.889% 16.889%);background:linear-gradient(#5cacf0,#94ccfb 33%,#c8e6fb 45%,#fff 50%,#dbeaf4 70%,#c7dce9);position:absolute;inset:0}.work-timeline__window-layer{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.work-timeline__window-back{z-index:1;filter:brightness(var(--window-back-brightness))}.work-timeline__window-shutter-layer{z-index:2;clip-path:inset(14% 12.333% 19.778% 12.167% round 29.333% 29.333% 19.556% 19.556%);pointer-events:none;position:absolute;inset:0;overflow:hidden}.work-timeline__window-shutter{filter:brightness(var(--window-shutter-brightness));transform:translate3d(0,var(--window-shutter-offset),0);transition:filter .18s linear,transform .18s linear}.work-timeline__window-shutter-shadow{z-index:1;opacity:calc(.35 * var(--window-shade));pointer-events:none;border-radius:28.333% 28.333% 18.889% 18.889%;position:absolute;inset:14.667% 13.167% 20.444%;box-shadow:inset 0 0 11px #1c191647,inset 0 0 3px #1c191638}.work-timeline__window-front{z-index:3;filter:brightness(var(--window-front-brightness))}.work-timeline__window-front-shade{z-index:4;mix-blend-mode:multiply;opacity:var(--window-front-shade-opacity);pointer-events:none;background:linear-gradient(#6a6e78,#878b95 38%,#a2a7ae);position:absolute;inset:0;-webkit-mask-image:url(/images/hero/window-front.webp);mask-image:url(/images/hero/window-front.webp);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.work-timeline__folio-column{width:min(calc(100% - 48px),var(--work-folio-width));align-items:center;gap:var(--work-folio-gap);flex-direction:column;margin-inline:auto;display:flex}.work-timeline__intro{min-height:80px;color:var(--work-ink);font-size:var(--work-type-primary-size);text-align:center;margin:-25px 0 0}.work-timeline__intro,.work-timeline__intro-copy{width:100%;max-width:var(--work-intro-copy-max-width)}.work-timeline__intro-copy{margin-inline:auto}.work-timeline__intro-copy h1{font-size:var(--work-type-primary-size);font-weight:var(--work-type-title-weight);letter-spacing:var(--work-type-title-tracking);margin:0;line-height:1.8}.work-timeline__intro-copy p{max-width:100%;margin:var(--work-intro-text-gap) auto 0;color:#8b8788;font-size:var(--work-type-body-size);font-weight:var(--work-type-body-weight);letter-spacing:var(--work-type-body-tracking);line-height:1.6}.work-timeline__journey{align-self:flex-start;width:min(860px,100vw - 48px);margin:12px 0 0;padding-bottom:clamp(96px,12vh,120px);position:relative}.work-timeline__flight-plan{z-index:2;width:48px;color:var(--work-accent);flex-direction:column;align-items:center;display:flex;position:absolute;top:-106px;left:-3px}.work-timeline__flight-label{font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.13em;white-space:nowrap;font-size:8px;line-height:1}.work-timeline__plane{width:16px;height:15px;margin-top:8px}.work-timeline__route{z-index:0;top:-58.84px;left:var(--timeline-route-left);pointer-events:none;width:44px;height:110px;display:block;position:absolute;overflow:visible}.work-timeline__route-overlay,.work-timeline__route-rail{z-index:0;pointer-events:none;display:block;position:absolute;top:0;left:0;overflow:visible}.work-timeline__route-overlay{z-index:1;top:-58.84px;left:var(--timeline-route-left);width:44px;height:110px}.work-timeline__route-rail{top:51.16px;left:var(--timeline-route-left);width:1px;height:1px}.work-timeline__route-active,.work-timeline__route-base{fill:none;stroke-linecap:round;stroke-linejoin:miter;vector-effect:none}.work-timeline__route-base{stroke:var(--work-route);stroke-width:1px;stroke-dasharray:2 3.5}.work-timeline__route-active{stroke:var(--work-accent);stroke-width:1.25px;stroke-dasharray:1}.work-timeline:not([data-geometry-ready=true]) .work-timeline__route,.work-timeline:not([data-geometry-ready=true]) .work-timeline__route-overlay,.work-timeline:not([data-geometry-ready=true]) .work-timeline__route-rail{visibility:hidden}.work-timeline__route-halo{fill:var(--work-accent);filter:drop-shadow(0 0 2px #3957ff40);opacity:0;transition:opacity .12s linear}.work-timeline__route-endpoint{fill:var(--work-accent)}.work-timeline__artifacts,.work-timeline__entries{padding:var(--timeline-lead-in) 0 0;margin:0;list-style:none}.work-timeline__entries{left:var(--timeline-entry-offset);width:calc(100% - var(--timeline-entry-offset));flex-direction:column;display:flex;position:relative}.work-timeline__artifact-row,.work-timeline__entry{grid-template-columns:var(--year-column) var(--axis-column) var(--content-gutter) minmax(0,1fr);align-items:start;display:grid;position:relative}.work-timeline__employment-group,.work-timeline__experience-group{margin-bottom:var(--space-artifact-group)}.work-timeline__employment-group>.work-timeline__entry,.work-timeline__experience-group>.work-timeline__entry{margin-bottom:var(--space-overview-to-artifact)}.work-timeline__year{width:max-content;min-width:33px;height:auto;color:var(--work-detail-muted);font-family:var(--work-detail-meta-family);font-size:var(--work-detail-meta-size);font-weight:400;line-height:var(--work-detail-meta-leading);letter-spacing:normal;text-align:center;white-space:nowrap;grid-area:1/1;justify-self:end;margin-top:1px;padding:0;position:relative}.work-timeline__year-location,.work-timeline__year-value{width:max-content;min-width:33px;height:auto;color:var(--work-detail-muted);font-family:var(--work-detail-meta-family);font-size:var(--work-detail-meta-size);font-weight:400;line-height:var(--work-detail-meta-leading);letter-spacing:normal;text-align:center;text-transform:uppercase;display:block}.work-timeline__year-location{white-space:nowrap}.work-timeline__axis-cell{z-index:1;grid-area:1/2;justify-content:center;padding-top:5px;display:flex;position:relative}.work-timeline__node{border-radius:50%;flex:none;transition:border-color .3s cubic-bezier(.23,1,.32,1),background-color .3s cubic-bezier(.23,1,.32,1),color .3s cubic-bezier(.23,1,.32,1);display:block;position:relative}.work-timeline__node--main{background:var(--work-bg);color:#b4b2b2;border:1px solid #c3c1c1;width:13px;height:13px}.work-timeline__node--main>span{background:currentColor;border-radius:50%;transition:background-color .3s cubic-bezier(.23,1,.32,1);position:absolute;inset:3.5px}.work-timeline__node--secondary{color:#a9a7ad;background:#a9a7ad;width:5px;height:5px;margin-top:0}.work-timeline__node:after{border-radius:inherit;content:"";opacity:0;pointer-events:none;border:1px solid;position:absolute;inset:-1px;transform:scale(1)}.work-timeline__node--main:after{--pulse-scale:2.4}.work-timeline__node--secondary:after{--pulse-scale:1.8}.work-timeline__node.is-active{color:#3a53ed;border-color:#3a53ed}.work-timeline__node--secondary.is-active{background:#3a53ed}.work-timeline__node.is-pulsing:after{animation:work-node-pulse .72s cubic-bezier(.19,1,.22,1) both}@keyframes work-node-pulse{0%{opacity:.42;transform:scale(1)}to{opacity:0;transform:scale(var(--pulse-scale,2.4))}}.work-timeline__entry-body{width:min(var(--work-copy-max-width),100%);max-width:var(--work-copy-max-width);grid-area:1/4}.work-timeline__project-heading{align-items:flex-start;gap:var(--experience-heading-gap);flex-direction:column;width:100%;display:flex}.work-timeline__experience-title{color:var(--work-detail-ink);font-family:var(--work-detail-title-family);font-size:var(--work-detail-title-size);font-weight:var(--work-detail-title-weight);letter-spacing:var(--work-detail-title-tracking);line-height:var(--work-detail-title-leading);margin:0}.work-timeline__project-title a{color:inherit}.work-timeline__experience-role{color:var(--work-detail-role);font-family:var(--work-detail-meta-family);font-size:var(--work-detail-role-size);font-weight:var(--work-detail-role-weight);letter-spacing:normal;line-height:var(--work-detail-role-leading);margin:0}.work-timeline__experience-role-row{align-items:baseline;gap:8px;min-width:0;display:flex}.work-timeline__experience-description{width:min(var(--work-copy-max-width),100%);max-width:var(--work-experience-copy-max-width);color:var(--work-detail-muted);font-family:var(--work-detail-body-family);letter-spacing:normal;opacity:1;margin:2px 0 0;font-size:.875rem;font-weight:400;line-height:1.55}.work-timeline__artifact-link{cursor:pointer;width:fit-content;max-width:100%;color:inherit;background:0 0;border-radius:16px;align-items:center;gap:7px;padding:2px 15px;transition:background-color .26s cubic-bezier(.23,1,.32,1);display:flex}.work-timeline__artifact-link:focus-visible,.work-timeline__artifact-link:hover{background:var(--work-surface-hover)}.work-timeline__artifact-copy{width:min(var(--work-artifact-max-width),100%);max-width:var(--work-artifact-max-width);flex-direction:column;gap:0;min-width:0;display:flex}.work-timeline__artifact-title{color:var(--work-detail-ink);font-family:var(--work-detail-title-family);font-size:var(--work-detail-artifact-title-size);font-weight:var(--work-detail-artifact-title-weight);letter-spacing:normal;line-height:var(--work-detail-artifact-title-leading);margin:0}.work-timeline__artifact-description{color:var(--work-detail-body);font-family:var(--work-detail-body-family);font-size:var(--work-detail-artifact-body-size);letter-spacing:normal;font-weight:400;line-height:var(--work-detail-artifact-body-leading);max-width:min(var(--work-artifact-max-width),100%);margin:0}.work-timeline__artifact-image,.work-timeline__artifact-visual{flex:none;justify-content:center;align-items:center;width:66px;height:63px;display:flex}.work-timeline__artifact-image{background:#f0efed;border:1px solid #3f3f421a;border-radius:2px;position:relative;overflow:hidden;box-shadow:0 2px 8px #25232714}.work-timeline__artifact-image img{object-fit:cover;object-position:center 18%;width:100%;height:100%}.work-timeline__artifact-image--detail img{object-fit:contain;object-position:center}.work-timeline__artifact-caption{color:#666366;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;background:#faf6f5d6;padding:1px 3px;font-size:6px;position:absolute;bottom:3px;right:4px}.work-timeline__artifact-stack{color:#4774b9;flex:none;width:66px;height:63px;display:block;position:relative}.work-timeline__artifact-sheet{background:#f5f5f2;border:1.5px solid #fff;border-radius:2.5px;justify-content:center;align-items:center;width:35px;height:46px;transition:transform .38s cubic-bezier(.22,1,.36,1);display:flex;position:absolute;overflow:hidden;box-shadow:0 .85px 5px #0000001a,0 .43px 1.3px #0000000f}.work-timeline__artifact-sheet svg{width:100%;height:100%;padding:4px}.work-timeline__artifact-stack--images img{object-fit:cover;object-position:center}.work-timeline__artifact-sheet--back{color:#618065;background:#e9ebdf;width:25.7px;height:34.1px;top:13.7px;left:6.3px;transform:rotate(-9.94deg)}.work-timeline__artifact-sheet--middle{color:#497cbd;background:#e8edf2;width:35px;height:46.3px;top:7.65px;left:13.9px;transform:none}.work-timeline__artifact-sheet--front{color:#4c68a5;background:#f8f7f3;width:30px;height:39.7px;top:12.15px;left:29.3px;transform:rotate(7.21deg)}.work-timeline__artifact-stack--pet .work-timeline__artifact-sheet--back{color:#8a8860;background:#eeebe2}.work-timeline__artifact-stack--data .work-timeline__artifact-sheet--back{color:#617e6e;background:#e3ebe5}.work-timeline__artifact-stack--saas .work-timeline__artifact-sheet--back{color:#756c83;background:#e9e7ec}.work-timeline__artifact-stack--assessment .work-timeline__artifact-sheet--back{color:#a17469;background:#f0e8e5}.work-timeline__artifact-link:focus-visible .work-timeline__artifact-sheet--back,.work-timeline__artifact-link:hover .work-timeline__artifact-sheet--back{transform:translate(-4.3px,-2.2px)rotate(-15deg)}.work-timeline__artifact-link:focus-visible .work-timeline__artifact-sheet--middle,.work-timeline__artifact-link:hover .work-timeline__artifact-sheet--middle{transform:translate(1.6px,-2.3px)scale(1.03)}.work-timeline__artifact-link:focus-visible .work-timeline__artifact-sheet--front,.work-timeline__artifact-link:hover .work-timeline__artifact-sheet--front{transform:translate(4.2px,-2.5px)rotate(12deg)}.work-timeline__project-heading:hover .work-timeline__employer,.work-timeline__project-heading:hover .work-timeline__project-title a,.work-timeline__project-title a:focus-visible{text-underline-offset:3px;text-decoration:underline}.work-timeline__artifacts{padding-top:0}.work-timeline__artifact-row{margin-bottom:var(--space-artifact-to-artifact);align-items:stretch}.work-timeline__artifact-row:last-child{margin-bottom:0}.work-timeline__artifact-row .work-timeline__axis-cell{align-self:stretch;align-items:center;padding-top:0}.work-timeline__artifact-row .work-timeline__artifact-link{grid-area:1/4}.work-timeline__closing-group{padding-bottom:calc(48px + var(--closing-terminal-offset));margin-top:12px}.work-timeline__closing-entry{align-items:start}.work-timeline__node--terminal{transform:translateY(var(--closing-terminal-offset));box-shadow:0 0 0 3px #3030330d}.work-timeline__closing-body{width:min(var(--work-closing-copy-max-width),100%);max-width:var(--work-closing-copy-max-width);align-items:center;gap:clamp(28px,4vw,48px);display:flex}.work-timeline__closing-copy{width:var(--work-closing-copy-width);min-width:var(--work-closing-copy-width);flex:0 0 var(--work-closing-copy-width)}.work-timeline__closing-title{color:var(--work-ink);font-size:var(--work-type-primary-size);font-weight:var(--work-detail-title-weight);letter-spacing:var(--work-type-title-tracking);line-height:var(--work-type-title-leading);margin:0}.work-timeline__closing-description{max-width:360px;margin:var(--experience-text-gap) 0 0;color:#8b8788;font-size:var(--work-type-small-size);line-height:var(--work-type-artifact-leading);white-space:nowrap}.work-timeline__skills{flex:0 0 var(--work-skills-width);width:var(--work-skills-width);margin:0 max(0px,calc(100% - var(--work-skills-anchor-width))) 0 auto;flex-wrap:nowrap;align-items:flex-end;gap:10px;padding:0;list-style:none;display:flex}.work-timeline__skill{color:#625e5f;cursor:default;width:36px;height:36px;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;transform-origin:bottom;border:0;border-radius:10px;outline:none;justify-content:center;align-items:center;font-size:10px;line-height:1;transition:transform .18s cubic-bezier(.23,1,.32,1);display:inline-flex;position:relative}.work-timeline__skill:focus-visible,.work-timeline__skill:hover{z-index:2;outline-offset:3px;outline:2px solid #3030333d;transform:translateY(-2px)scale(1.12)}.work-timeline__skill-label{color:#fff;letter-spacing:.01em;opacity:0;pointer-events:none;visibility:hidden;white-space:nowrap;background:#2b2b2d;border:0;border-radius:6px;padding:4px 6px;font-size:10px;line-height:1.1;transition:opacity .14s,transform .18s cubic-bezier(.23,1,.32,1),visibility .14s;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%,4px);box-shadow:0 4px 10px #1c1b1d2e}.work-timeline__skill-label:after{content:"";border:4px solid #0000;border-top-color:#2b2b2d;width:0;height:0;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}.work-timeline__skill:focus-visible .work-timeline__skill-label,.work-timeline__skill:hover .work-timeline__skill-label{opacity:1;visibility:visible;transform:translate(-50%)}.work-timeline__skill-mark{background:#fff;border:0;border-radius:11px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex;overflow:hidden;box-shadow:0 1px 4px #1c1b1d1f}.work-timeline__skill-mark img{object-fit:contain;object-position:center;width:100%;height:100%;display:block}.work-timeline__skill-mark--figma img{transform-origin:50%;transform:scale(1.7)}.work-timeline__skill-mark--claude{background:#db7757}.work-timeline__skill-mark--cursor{background:#f7f7f4}.work-timeline__bottom-nav{z-index:10;color:#a6a3a4;height:108px;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.18em;text-transform:uppercase;justify-content:center;align-items:flex-end;gap:17px;padding:0 24px 28px;font-size:12px;font-weight:500;line-height:1.8;display:flex;position:fixed;bottom:0;left:0;right:0}.work-timeline__bottom-nav:before{z-index:-1;background:linear-gradient(to bottom,#fff0 0,#ffffffc2 48%,var(--work-bg) 100%);content:"";pointer-events:none;position:absolute;inset:-34px 0 0}.work-timeline__bottom-nav a{border-radius:999px;align-items:center;padding:2px 10px;transition:color .16s cubic-bezier(.23,1,.32,1),background-color .16s cubic-bezier(.23,1,.32,1);display:inline-flex;position:relative}.work-timeline__bottom-nav a:focus-visible,.work-timeline__bottom-nav a:hover{color:#5c5b5b;background:#f2f0f0}.work-timeline .locale-switch{color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;align-items:center;gap:5px;display:inline-flex}.work-timeline .locale-switch button{cursor:pointer;min-width:0;min-height:0;font:inherit;color:inherit;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:2px 10px;transition:color .16s cubic-bezier(.23,1,.32,1),background-color .16s cubic-bezier(.23,1,.32,1);display:inline-flex;position:relative}.work-timeline .locale-switch button[aria-pressed=true]{color:var(--work-ink)}.work-timeline .locale-switch button:focus-visible,.work-timeline .locale-switch button:hover{color:#5c5b5b;background:#f2f0f0}.work-timeline[data-window-dark=true] .locale-switch button:focus-visible,.work-timeline[data-window-dark=true] .locale-switch button:hover,.work-timeline[data-window-dark=true] .work-timeline__bottom-nav a:focus-visible,.work-timeline[data-window-dark=true] .work-timeline__bottom-nav a:hover{color:#d6d4d1;background:#2b2928}.work-timeline :focus-visible{outline:2px solid var(--work-accent);outline-offset:4px}@media (max-width:75rem){.work-timeline{--year-column:56px;--axis-column:16px;--axis-center:calc(var(--year-column) + var(--axis-column) / 2);--content-gutter:24px;--timeline-lead-in:30px;padding-top:70px}.work-timeline__identity{text-align:left;align-items:flex-start;width:218px;margin:0;padding:16px 0 16px 30px;left:clamp(38px,4.9vw,102px);transform:none}.work-timeline__hero-visual{width:var(--work-window-width);height:var(--work-window-height)}.work-timeline__folio-column{padding-top:74px}.work-timeline__intro{margin-top:-19px}.work-timeline__identity:before{display:block}.work-timeline__journey{width:min(860px,100vw - 48px);margin-top:0}.work-timeline__route{top:0}}@media (min-width:45rem) and (max-width:64rem){.work-timeline{--timeline-lead-in:30px}}@media (min-width:45rem){.work-timeline__intro-copy h1,.work-timeline__intro-copy p{white-space:normal}}@media (min-width:47.5625rem){.work-timeline{--content-gutter:14px;--timeline-entry-offset:-94px}}@media (max-width:47.5rem){.work-timeline{--year-column:43px;--axis-column:14px;--axis-center:calc(var(--year-column) + var(--axis-column) / 2);--content-gutter:16px;--timeline-lead-in:30px;--narrow-axis-shift:clamp(26px,calc(52px - 2.5vw),34px);--timeline-entry-offset:calc(0px - var(--narrow-axis-shift));--space-overview-to-artifact:10px;--space-artifact-group:48px;--space-artifact-to-artifact:10px;--closing-terminal-offset:3px;--work-window-width:min(197px,58vw);--work-window-height:calc(var(--work-window-width) * 1.5);min-height:100svh;padding:32px 20px 0;overflow:clip}.work-timeline__top-composition{width:100%}.work-timeline__identity{text-align:center;align-items:center;gap:3px;width:fit-content;max-width:100%;margin:0 auto;padding:5px 0;position:static;top:auto;left:auto;transform:none}.work-timeline__folio-column{width:min(calc(100vw - 48px),var(--work-folio-width));gap:48px;margin-top:42px;padding-top:0}.work-timeline__identity:before{display:none}.work-timeline__identity-email{margin-top:2px}.work-timeline__intro{width:100%;max-width:var(--work-intro-copy-max-width);margin:-17px auto 0}.work-timeline__flight-plan{width:48px;margin:0;position:absolute;top:-115px;left:calc(50% - 24px);transform:none}.work-timeline__journey{width:100%;margin:97px 0 0}.work-timeline__intro{min-height:80px}.work-timeline__intro-copy{width:100%;max-width:100%}.work-timeline__intro-copy h1{font-size:var(--work-type-primary-size)}.work-timeline__intro-copy p{max-width:100%;margin:var(--work-intro-text-gap) auto 0;font-size:var(--work-type-body-size);line-height:var(--work-type-body-leading)}.work-timeline__journey{padding-bottom:4px}.work-timeline__plane{width:16px;height:15px;margin-top:8px}.work-timeline__route,.work-timeline__route-overlay,.work-timeline__route-rail{top:0;left:var(--timeline-route-left)}.work-timeline__route{width:100%}.work-timeline__entries{padding-top:var(--timeline-lead-in)}.work-timeline__employment-group,.work-timeline__experience-group{margin-bottom:var(--space-artifact-group)}.work-timeline__employment-group>.work-timeline__entry,.work-timeline__experience-group>.work-timeline__entry{margin-bottom:var(--space-overview-to-artifact)}.work-timeline__year{width:max-content;min-width:33px;height:auto;font-size:var(--work-detail-meta-size);letter-spacing:normal;text-align:center;margin-top:1px;padding:0}.work-timeline__axis-cell{padding-top:5px}.work-timeline__node--main{width:13px;height:13px}.work-timeline__node--main>span{inset:3.5px}.work-timeline__entry-body{max-width:none}.work-timeline__project-heading{align-items:flex-start;gap:var(--experience-heading-gap);flex-direction:column;display:flex}.work-timeline__experience-title{font-size:var(--work-detail-title-size);line-height:var(--work-detail-title-leading)}.work-timeline__experience-role{font-size:var(--work-detail-role-size);line-height:var(--work-detail-role-leading)}.work-timeline__experience-description{max-width:var(--work-experience-copy-max-width);margin-top:2px;font-size:.875rem;line-height:1.55}.work-timeline__artifact-link{border-radius:16px;gap:7px;width:100%;padding:2px 15px}.work-timeline__artifact-stack,.work-timeline__artifact-visual{width:66px;height:63px}.work-timeline__artifact-sheet{border-radius:2.5px;width:35px;height:46px}.work-timeline__artifact-image{width:66px;height:63px}.work-timeline__artifact-title{font-size:14px;line-height:17.5px}.work-timeline__artifact-description,.work-timeline__artifact-summary{max-width:min(var(--work-artifact-max-width),100%);font-size:13px;line-height:21.13px}.work-timeline__artifact-row{margin-bottom:var(--space-artifact-to-artifact)}.work-timeline__artifact-row .work-timeline__axis-cell{padding-top:0}.work-timeline__closing-group{padding-bottom:calc(32px + var(--closing-terminal-offset));margin-top:12px}.work-timeline__closing-body{flex-direction:column;align-items:flex-start;gap:16px}.work-timeline__closing-copy{flex:0 auto;width:auto;min-width:0}.work-timeline__closing-description{max-width:360px}.work-timeline__skills{flex-wrap:wrap;flex:none;gap:10px;width:auto;margin:0}.work-timeline__bottom-nav{letter-spacing:1.1px;justify-content:center;gap:4px;height:auto;margin-top:12px;padding:26px 0 30px;font-size:10px;position:relative}.work-timeline .locale-switch button,.work-timeline__bottom-nav a{padding-inline:6px}.work-timeline__bottom-nav:before{display:none}}@media (max-width:38.75rem){.work-timeline__artifact-link{padding-inline:8px}.work-timeline__folio-column{gap:40px}.work-timeline__intro{min-height:105.578px;margin-top:-19px}}@media (prefers-reduced-motion:reduce){.work-timeline__artifact-link,.work-timeline__artifact-sheet,.work-timeline__artifact-stack,.work-timeline__bottom-nav a,.work-timeline__identity-email,.work-timeline__node,.work-timeline__node:after{transition:none!important;animation:none!important}.work-timeline__node.is-pulsing:after{animation:none!important}}@media (hover:none){.work-timeline__skill:hover{transform:none}.work-timeline__skill:hover .work-timeline__skill-label{opacity:0;visibility:hidden;transform:translate(-50%,4px)}.work-timeline__artifact-link:hover{box-shadow:none;background:0 0;transform:none}}.life-mapping{--life-bg:#f3f3f1;--life-accent:var(--work-accent,#3957ff);--font-body:var(--font-franklin),var(--font-noto-sans),"Noto Sans SC",sans-serif;--font-index:var(--font-franklin),var(--font-noto-sans),"Noto Sans SC",sans-serif;--life-ink:#202020;--life-muted:#343434;--life-soft:#817f7b;--life-hint:#ada5a20d;background:var(--life-bg);width:100vw;height:100dvh;min-height:100dvh;color:var(--life-ink);font-family:var(--font-body),"Noto Sans SC",sans-serif;-webkit-font-smoothing:antialiased;place-items:stretch stretch;margin:0;padding:0;display:grid;position:relative;overflow:clip}.life-mapping__title{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.life-mapping__canvas{z-index:1;isolation:isolate;aspect-ratio:auto;overscroll-behavior:contain;touch-action:none;width:100%;max-width:none;height:100%;margin:0 auto;position:relative;overflow:hidden}.life-mapping__foreground{z-index:3;pointer-events:none;position:absolute;inset:0}.life-mapping__pan-layer{z-index:0;cursor:grab;transform-origin:50%;-webkit-user-select:none;user-select:none;will-change:transform;place-items:center;display:grid;position:absolute;inset:0;overflow:visible}.life-mapping__scene{aspect-ratio:80.5/54.2;flex:none;width:min(100%,148.523dvh);position:relative;transform:translate(10%,clamp(-16rem,-18vh,-6rem));container-type:inline-size}.life-mapping__pan-layer[data-map-interacting=true]{cursor:grabbing}.life-mapping__geography,.life-mapping__map,.life-mapping__route-scene{position:absolute;inset:0}.life-mapping__map{z-index:0;opacity:.74;display:block;overflow:visible}.life-mapping__geography,.life-mapping__map{pointer-events:none}.life-mapping__geography svg{width:100%;height:100%;display:block}.life-mapping__geography path{fill:none;stroke:var(--life-hint);stroke-width:1px;stroke-linecap:round;stroke-dasharray:1 9;vector-effect:non-scaling-stroke}.life-mapping__route-scene{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.life-mapping__route-node{pointer-events:none}.life-mapping__route-node-halo{fill:var(--life-accent);opacity:.18;filter:drop-shadow(0 0 1.4px #3957ff57);transform-box:fill-box;transform-origin:50%;animation:life-mapping-node-halo-pulse 1.8s ease-in-out -.08s infinite}.life-mapping__route-node-ring{fill:none;stroke:var(--life-accent);stroke-width:.08px;stroke-dasharray:none;stroke-linecap:round;animation:life-mapping-node-ring-pulse 1.8s ease-in-out infinite}.life-mapping__route-node-dot,.life-mapping__route-node-ring{vector-effect:none;transform-box:fill-box;transform-origin:50%}.life-mapping__route-node-dot{fill:var(--life-accent);stroke:none;animation:life-mapping-node-dot-pulse 1.8s ease-in-out -.12s infinite}@keyframes life-mapping-node-halo-pulse{0%,to{opacity:.12;transform:scale(.9)}50%{opacity:.28;transform:scale(1.08)}}.life-mapping__route-label{fill:var(--life-ink);font-family:var(--font-body),"Noto Sans SC",sans-serif;letter-spacing:.01px;opacity:1;white-space:pre;font-size:.9px;font-weight:500;transition:opacity .1s ease-out}@keyframes life-mapping-node-ring-pulse{0%,to{opacity:.46;transform:scale(.86)}50%{opacity:1;transform:scale(1.2)}}@keyframes life-mapping-node-dot-pulse{0%,to{opacity:.78;transform:scale(.86)}50%{opacity:1;transform:scale(1)}}.life-mapping__panel{z-index:3;top:var(--life-node-y);left:var(--life-node-x);width:min(220px,28vw);color:var(--life-muted);border-top:1px solid #20202033;padding-top:8px;font-size:11px;line-height:1.45;position:absolute}.life-mapping__panel[hidden]{display:none}.life-mapping__panel--yili{transform:translate(18px,44px)}.life-mapping__panel--beijing{transform:translate(calc(-100% - 18px),18px)}.life-mapping__panel--nanjing{transform:translate(calc(-100% - 18px),calc(-100% - 18px))}.life-mapping__panel-heading{color:var(--life-ink);font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:baseline;gap:12px;font-size:10px;display:flex}.life-mapping__panel-heading time{color:var(--life-soft);white-space:nowrap;font-size:9px}.life-mapping__panel-description,.life-mapping__panel-label{margin:4px 0 0}.life-mapping__panel-images{gap:6px;margin-top:9px;display:flex}.life-mapping__panel-image{object-fit:cover;width:52px;height:52px;box-shadow:0 2px 7px #2020201a}.life-mapping__panel-image--logo{object-fit:contain;background:#fffdfb;padding:5px}.life-mapping__boarding-pass{z-index:3;color:#20201e;pointer-events:none;background:#f9f9f7f5;border:1px solid #2c2c2a1a;border-radius:1.35rem;gap:clamp(.65rem,1.2vw,.9rem);width:min(32rem,100vw - 2rem);min-height:16.5rem;padding:clamp(1rem,2.1vw,1.45rem);position:absolute;bottom:clamp(1.25rem,4vh,2.75rem);right:50%;transform:translate(50%)}.life-mapping__boarding-pass-details,.life-mapping__boarding-pass-header,.life-mapping__boarding-pass-route{justify-content:space-between;align-items:flex-start;display:flex}.life-mapping__boarding-pass-header{color:#858580;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.13em;text-transform:uppercase;font-size:.58rem}.life-mapping__boarding-pass-route{align-items:center;gap:.75rem}.life-mapping__boarding-pass-airport{gap:.15rem;min-width:0;display:grid}.life-mapping__boarding-pass-airport--to{text-align:right}.life-mapping__boarding-pass-details span,.life-mapping__boarding-pass-kicker{color:#8a8984;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;font-size:.58rem}.life-mapping__boarding-pass-airport strong{font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.03em;font-size:clamp(1.4rem,3.25vw,2.5rem);font-weight:600;line-height:.95}.life-mapping__boarding-pass-airport>span:last-child{color:#696863;font-size:.82rem}.life-mapping__boarding-pass-journey{color:#8a8984;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap;justify-items:center;gap:.35rem;font-size:.65rem;display:grid}.life-mapping__boarding-pass-plane{color:#aaa9a3;font-size:1.2rem}.life-mapping__boarding-pass-details{grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem}.life-mapping__boarding-pass-details div{gap:.35rem;min-width:0;display:grid}.life-mapping__boarding-pass-details strong{font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.75rem,1.1vw,.95rem);font-weight:600;overflow:hidden}.life-mapping__boarding-pass-divider{background:repeating-linear-gradient(90deg,#aaa9a3 0 .45rem,#0000 .45rem .75rem);margin-inline:-.15rem}.life-mapping__boarding-pass-barcode{opacity:.92;background:linear-gradient(90deg,#0000 0 1.5%,#20201e 1.5% 4%,#0000 4% 5%,#20201e 5% 5.8%,#0000 5.8% 7.2%,#20201e 7.2% 9.7%,#0000 9.7% 11%,#20201e 11% 11.7%,#0000 11.7% 13.6%,#20201e 13.6% 17.2%,#0000 17.2% 18.5%,#20201e 18.5% 19.1%,#0000 19.1% 22%,#20201e 22% 25.8%,#0000 25.8% 27%,#20201e 27% 28%,#0000 28% 30.4%,#20201e 30.4% 34.5%,#0000 34.5% 36%,#20201e 36% 36.6%,#0000 36.6% 38.5%,#20201e 38.5% 42.7%,#0000 42.7% 44%,#20201e 44% 45.2%,#0000 45.2% 47.7%,#20201e 47.7% 51.5%,#0000 51.5% 53%,#20201e 53% 53.8%,#0000 53.8% 56.7%,#20201e 56.7% 60%,#0000 60% 61.3%,#20201e 61.3% 65.5%,#0000 65.5% 67%,#20201e 67% 68%,#0000 68% 70.6%,#20201e 70.6% 74.3%,#0000 74.3% 75.8%,#20201e 75.8% 76.6%,#0000 76.6% 79.5%,#20201e 79.5% 83.4%,#0000 83.4% 85%,#20201e 85% 86%,#0000 86% 89%,#20201e 89% 92.8%,#0000 92.8% 94%,#20201e 94% 98.5%,#0000 98.5% 100%);border-radius:.1rem;min-height:2.75rem}.life-mapping__boarding-pass-action{letter-spacing:.1em;background:#20201e;min-height:1.9rem;font-size:.78rem;font-weight:600}.life-mapping--lab .life-mapping__location{top:var(--life-node-y);left:var(--life-node-x);z-index:1;pointer-events:auto;width:0;height:0;position:absolute}.life-mapping__location{pointer-events:none}.life-mapping--lab{padding-top:32px;padding-bottom:108px;overflow:visible}.life-mapping--lab:has(.life-mapping__location[data-location=hong-kong].is-selected){padding-bottom:136px}.life-mapping--lab .life-mapping__node{margin:0;top:0;left:0;transform:translate(-50%,-50%)}.life-mapping--lab .life-mapping__location.is-selected{z-index:2}.life-mapping--lab .life-mapping__location.is-selected .life-mapping__node-marker{box-shadow:0 0 0 3px #20202017}.life-mapping--lab .life-mapping__location.is-hovered .life-mapping__node-label,.life-mapping--lab .life-mapping__location.is-selected .life-mapping__node-label{opacity:1}.life-mapping--lab .life-mapping__node-label{z-index:2;color:#655f5b;width:max-content;max-width:142px;font-family:var(--font-body),sans-serif;letter-spacing:0;text-align:left;text-transform:none;gap:2px;font-size:10.5px;font-weight:400;line-height:1.3}.life-mapping--lab .life-mapping__node-label strong{color:var(--life-ink);font-family:var(--font-body),sans-serif;letter-spacing:.015em;text-transform:none;font-size:13px;font-weight:650;line-height:1.2}.life-mapping--lab .life-mapping__node-label>span{color:#655f5b;font-size:10.5px;font-weight:400;line-height:1.3}.life-mapping--lab .life-mapping__node-label time{color:#918984;letter-spacing:.045em;font-size:9px;font-weight:400;line-height:1.25}.life-mapping--lab .life-mapping__node[data-node-id=yili] .life-mapping__node-label{text-align:right;max-width:118px;top:7px;left:auto;right:44px}.life-mapping--lab .life-mapping__node[data-node-id=beijing] .life-mapping__node-label{text-align:left;max-width:142px;top:18px;left:42px;right:auto}.life-mapping--lab .life-mapping__node[data-node-id=nanjing] .life-mapping__node-label{text-align:left;max-width:132px;top:18px;left:42px;right:auto}.life-mapping--lab .life-mapping__node[data-node-id=hong-kong] .life-mapping__node-label{text-align:center;max-width:128px;top:37px;left:7px;right:auto;transform:translate(-50%)}.life-mapping__identity-note{z-index:4;top:var(--life-identity-y);left:var(--life-identity-x);color:var(--life-muted);font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.13em;text-align:right;text-transform:uppercase;flex-direction:column;gap:4px;font-size:9px;line-height:1.35;display:flex;position:absolute;transform:translate(-100%,-50%)}.life-mapping__identity-note strong{color:var(--life-ink);letter-spacing:.17em;font-size:12px;font-weight:500}.life-mapping--lab .life-mapping__signature{z-index:3;color:#373230;font-family:var(--font-display),Georgia,serif;letter-spacing:.06em;white-space:nowrap;margin:0;font-size:clamp(88px,12vw,176px);font-weight:500;line-height:1;position:absolute;bottom:3.5%;left:4.5%}@media (max-width:900px){.life-mapping{padding-inline:0}.life-mapping__panel{width:min(205px,32vw)}}@media (max-width:48rem){.life-mapping{padding-top:0}.life-mapping__canvas{width:100%;height:100%}.life-mapping__panel{width:min(210px,62vw);font-size:10px}.life-mapping__boarding-pass{min-height:15rem;padding:1rem;bottom:.9rem}.life-mapping__boarding-pass-details{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:.55rem}.life-mapping__identity-note{font-size:8px}.life-mapping__identity-note strong{font-size:11px}.life-mapping--lab .life-mapping__node[data-node-id=yili] .life-mapping__node-label{max-width:118px;right:38px}.life-mapping--lab .life-mapping__node[data-node-id=beijing] .life-mapping__node-label{max-width:126px;top:18px;left:42px}.life-mapping--lab .life-mapping__node[data-node-id=nanjing] .life-mapping__node-label{text-align:left;max-width:112px;top:18px;left:42px;right:auto}.life-mapping--lab .life-mapping__node[data-node-id=hong-kong] .life-mapping__node-label{text-align:center;max-width:108px;top:37px;left:22px;transform:translate(-50%)}.life-mapping--lab .life-mapping__signature{letter-spacing:.06em;font-size:clamp(60px,16vw,112px);bottom:3.5%;left:5%}}@media (prefers-reduced-motion:reduce){.life-mapping__route-node-dot,.life-mapping__route-node-halo,.life-mapping__route-node-ring{animation:none}.life-mapping__route-label{transition:none}}.life-mapping__boarding-pass-wrap{z-index:3;filter:none;pointer-events:none;gap:1rem;width:min(18rem,100vw - 2rem);min-width:0;max-width:calc(100vw - 2rem);display:grid;position:absolute;bottom:clamp(2.5rem,5vh,4rem);right:50%;transform:translate(50%);container-type:inline-size}.life-mapping__boarding-pass-ticket{z-index:3;filter:drop-shadow(0 20px 30px #20201e33)drop-shadow(0 7px 14px #20201e21);transform-origin:50%;width:100%;transition:filter .12s cubic-bezier(.4,0,.2,1);position:relative}.life-mapping__boarding-pass{aspect-ratio:1/1.15;filter:none;isolation:isolate;pointer-events:auto;--ticket-content-inset:clamp(1.25rem,7.5cqw,2rem);width:100%;min-height:0;padding:clamp(1.75rem,10cqw,2.75rem) clamp(1rem,6.2cqw,2rem) clamp(1.25rem,8cqw,1.75rem);padding-inline:var(--ticket-content-inset);--ticket-notch-position:calc(74.5% + 5px);--ticket-notch-radius:clamp(.75rem,4.7cqw,1.5rem);-webkit-mask:radial-gradient(circle at 0 var(--ticket-notch-position),transparent 0 var(--ticket-notch-radius),#000 calc(var(--ticket-notch-radius) + 1px)) 0 0 /100% 100% no-repeat,radial-gradient(circle at 100% var(--ticket-notch-position),transparent 0 var(--ticket-notch-radius),#000 calc(var(--ticket-notch-radius) + 1px)) 0 0 /100% 100% no-repeat;mask:radial-gradient(circle at 0 var(--ticket-notch-position),transparent 0 var(--ticket-notch-radius),#000 calc(var(--ticket-notch-radius) + 1px)) 0 0 /100% 100% no-repeat,radial-gradient(circle at 100% var(--ticket-notch-position),transparent 0 var(--ticket-notch-radius),#000 calc(var(--ticket-notch-radius) + 1px)) 0 0 /100% 100% no-repeat;background:#f7f7f5;border:1px solid #20201e12;border-radius:1.25rem;grid-template-rows:clamp(4.5rem,26cqw,5.5rem) minmax(0,1fr) clamp(1.25rem,7.8cqw,1.75rem) calc(clamp(3rem,18.5cqw,3.5rem) + .625rem);gap:0;display:grid;position:relative;bottom:auto;right:auto;overflow:visible;transform:none;box-shadow:0 0 0 1px #20201e09;-webkit-mask-composite:source-in;mask-composite:intersect}.life-mapping__boarding-pass-map-texture{z-index:0;border-radius:inherit;opacity:.1;pointer-events:none;background-image:url(/images/ui/boarding-pass-dot-world.svg);background-position:50% 12%;background-repeat:no-repeat;background-size:cover;width:100%;height:72%;position:absolute;top:0;left:0;right:0}.life-mapping__boarding-pass-barcode,.life-mapping__boarding-pass-details,.life-mapping__boarding-pass-divider,.life-mapping__boarding-pass-route{z-index:1;pointer-events:auto;min-height:0;position:relative}.life-mapping__boarding-pass-barcode-clip{z-index:1;width:100%;min-width:0;height:100%;min-height:0;position:relative;overflow:hidden}.life-mapping__boarding-pass-code{pointer-events:none}.life-mapping__boarding-pass-airport>*,.life-mapping__boarding-pass-detail>*,.life-mapping__boarding-pass-journey>*{pointer-events:auto}.life-mapping__boarding-pass-route{grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);align-content:start;align-items:stretch;row-gap:clamp(.5rem,3cqw,.75rem);display:grid}.life-mapping__boarding-pass-route-codes,.life-mapping__boarding-pass-route-secondary{grid-template-columns:minmax(0,1fr) clamp(2.75rem,14cqw,3.5rem) minmax(0,1fr);column-gap:clamp(.25rem,1.6cqw,.75rem);display:grid}.life-mapping__boarding-pass-route-codes{align-items:center;padding-top:clamp(.65rem,3.7cqw,.8rem)}.life-mapping__boarding-pass-route-codes .life-mapping__boarding-pass-airport{min-width:0;display:grid}.life-mapping__boarding-pass-route-codes .life-mapping__boarding-pass-airport strong{color:#171715;letter-spacing:-.04em;font-size:clamp(1.845rem,11.115cqw,2.88rem);font-weight:700;line-height:.95}.life-mapping__boarding-pass-route-city{color:#1c1c1a8a;font-size:clamp(.771875rem,4.37cqw,1.06875rem);font-weight:500;line-height:1.15}.life-mapping__boarding-pass-route-city--to{text-align:right}.life-mapping__boarding-pass-route-secondary{align-items:baseline;min-height:1.15em}.life-mapping__boarding-pass-route-duration{color:#1e1e1c80;white-space:nowrap;justify-self:center;font-size:clamp(.75rem,4.5cqw,1rem);line-height:1;display:grid}.life-mapping__boarding-pass-route-codes .life-mapping__boarding-pass-journey{align-self:stretch;justify-items:center;display:grid}.life-mapping__boarding-pass-plane{color:#1e1e1c57;pointer-events:none;font-size:clamp(1.265rem,8.2cqw,1.74rem);line-height:1}.life-mapping__boarding-pass-details{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:minmax(0,1fr);align-items:stretch;gap:clamp(.65rem,3.5cqw,.95rem) clamp(1.5rem,9cqw,2.5rem);display:grid;transform:translateY(15px)}.life-mapping__boarding-pass-detail-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:clamp(1.5rem,9cqw,2.5rem);min-width:0;display:grid}.life-mapping__boarding-pass-details{z-index:2}.life-mapping__boarding-pass-detail--right{text-align:right}.life-mapping__boarding-pass-language-options{width:100%;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;flex:none;justify-content:flex-start;align-items:center;gap:.16rem;line-height:1;min-width:0!important;display:flex!important}.life-mapping__boarding-pass-detail--right .life-mapping__boarding-pass-language-options{justify-content:flex-end}.life-mapping__boarding-pass-language-option{color:#1c1c1a85;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-size:clamp(.665rem,3.7cqw,.9rem);font-weight:500;line-height:1.1}.life-mapping__boarding-pass-language-option[aria-pressed=true]{color:#1c1c1a;font-weight:700;text-decoration:none}.life-mapping__boarding-pass-language-option:focus-visible{outline-offset:2px;outline:1px solid #1c1c1a}.life-mapping__boarding-pass-language-slash{color:#1c1c1a57;font-size:clamp(.6rem,3.2cqw,.78rem)}.life-mapping__boarding-pass-detail{gap:clamp(.1875rem,1.2cqw,.375rem);display:grid}.life-mapping__boarding-pass-detail span{color:#1e1e1c78;font-family:var(--font-body),"Noto Sans SC",sans-serif;letter-spacing:0;font-size:clamp(.7125rem,3.8cqw,.95rem);font-weight:400;line-height:1.15}.life-mapping__boarding-pass-detail strong{color:#1c1c1a;font-family:var(--font-index),ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:-.02em;font-size:clamp(.665rem,4.123cqw,.914375rem);font-weight:650;line-height:1.1}.life-mapping__boarding-pass-detail:last-child strong{white-space:nowrap}.life-mapping__boarding-pass-divider{background:repeating-linear-gradient(90deg,#2828265c 0 clamp(.25rem,1.5cqw,.4375rem),#0000 clamp(.25rem,1.5cqw,.4375rem) clamp(.5rem,3cqw,.875rem));align-self:center;height:1px;margin-inline:0;transform:translateY(15px)}.life-mapping__boarding-pass-barcode{opacity:1;background:0 0;align-self:start;align-items:stretch;width:100%;min-width:0;height:clamp(3rem,18.5cqw,3.5rem);min-height:0;margin-inline:0;padding-inline:0;display:grid;overflow:visible;transform:translateY(20px)}.life-mapping__boarding-pass-code{object-fit:fill;align-self:stretch;width:100%;min-width:0;max-width:none;height:100%;min-height:0;display:block}.life-mapping__boarding-pass-action{z-index:1;width:100%;min-height:2.75rem;box-shadow:none;color:#f8f8f5;cursor:pointer;font:inherit;letter-spacing:.08em;pointer-events:auto;background:#080807;border:0;border-radius:999px;place-items:center;margin:0;font-size:.875rem;font-weight:500;transition:transform .12s ease-out;display:grid;position:relative}.life-mapping__boarding-pass-action:focus-visible{outline-offset:4px;outline:2px solid #080807}@media (min-width:48.001rem) and (max-width:65rem){.life-mapping__boarding-pass-wrap{width:min(18rem,100vw - 2rem)}}@media (max-width:48rem){.life-mapping__boarding-pass-wrap{gap:.875rem;width:min(18rem,100vw - 2rem);bottom:1rem}.life-mapping__boarding-pass{aspect-ratio:1/1.15;padding:clamp(1.75rem,10cqw,2.75rem) var(--ticket-content-inset) clamp(1.25rem,8cqw,1.75rem);grid-template-rows:clamp(4.5rem,26cqw,5.5rem) minmax(0,1fr) clamp(1.25rem,7.8cqw,1.75rem) calc(clamp(3rem,18.5cqw,3.5rem) + .625rem);gap:0}.life-mapping__boarding-pass-action{min-height:2.75rem;font-size:.875rem}}.life-mapping[data-boarding-pressed=true] .life-mapping__boarding-pass-action{animation:life-boarding-pass-press var(--boarding-press-duration,.5s) linear both}@keyframes life-boarding-pass-press{0%{animation-timing-function:cubic-bezier(.2,.8,.2,1);transform:translateY(0)scale(1)}35.294%{animation-timing-function:linear;transform:translateY(2px)scale(.985)}50%{animation-timing-function:cubic-bezier(.22,1,.36,1);transform:translateY(2px)scale(.985)}to{transform:translateY(0)scale(1)}}.life-mapping[data-boarding-state=accepted] .life-mapping__boarding-pass-ticket{animation:life-boarding-pass-accepted var(--boarding-accepted-duration,.14s) cubic-bezier(.215,.61,.355,1) both;filter:drop-shadow(0 16px 24px #20201e33)drop-shadow(0 5px 10px #20201e21)}@keyframes life-boarding-pass-accepted{0%{animation-timing-function:cubic-bezier(.4,0,.2,1);transform:translateY(0)scale(1)}31.25%{animation-timing-function:linear;transform:translateY(2px)scale(.985)}47.917%{animation-timing-function:cubic-bezier(.22,1,.36,1);transform:translateY(2px)scale(.985)}to{transform:translateY(0)scale(1)}}.life-mapping__boarding-pass-scan-line{z-index:4;height:8px;box-shadow:none;mix-blend-mode:normal;opacity:0;pointer-events:none;animation:life-boarding-pass-scan var(--boarding-scan-duration,1.6s) linear var(--boarding-scan-delay,.15s) both;background:linear-gradient(#0000,#3957ff14 18%,#3957ff2e 40% 60%,#3957ff14 82%,#0000);position:absolute;top:0;left:-16px;right:-16px;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 12px),#0000);mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 12px),#0000);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.life-mapping__boarding-pass-scan-line:after{content:"";mix-blend-mode:normal;background:#3957ff;height:3px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);box-shadow:0 0 5px #3957ff47,0 0 12px #3957ff2e,0 0 22px #3957ff1a}@keyframes life-boarding-pass-scan{0%{opacity:0;top:0}1%,98%{opacity:1}to{opacity:0;top:calc(100% - 8px)}}.life-mapping[data-boarding-state=exiting] .life-mapping__canvas{opacity:1}.life-mapping[data-boarding-state=exiting] .life-mapping__foreground{opacity:0;transition:opacity var(--boarding-exit-duration,.24s) cubic-bezier(.215,.61,.355,1) var(--boarding-exit-delay,50ms),transform var(--boarding-exit-duration,.24s) cubic-bezier(.215,.61,.355,1) var(--boarding-exit-delay,50ms);transform:translateY(-28px)}@media (prefers-reduced-motion:reduce){.life-mapping[data-boarding-state=accepted] .life-mapping__boarding-pass-ticket{animation:none}.life-mapping[data-boarding-pressed=true] .life-mapping__boarding-pass-action{transition:none;animation:none;transform:none}.life-mapping__boarding-pass-scan-line{animation:none}.life-mapping[data-boarding-state=exiting] .life-mapping__canvas,.life-mapping[data-boarding-state=exiting] .life-mapping__foreground{transition:none}.life-mapping[data-boarding-state=exiting] .life-mapping__foreground{transform:none}}html{scroll-behavior:smooth;scroll-padding-top:var(--header-offset);scrollbar-width:none;-ms-overflow-style:none;overflow-x:clip}html[lang=zh]{--font-display:var(--font-zh);--font-body:var(--font-zh);--font-index:var(--font-zh)}html[lang=en]{--font-display:var(--font-en);--font-body:var(--font-en);--font-index:var(--font-en)}html::-webkit-scrollbar{display:none}body{background-color:var(--color-background);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-body);scrollbar-width:none;-ms-overflow-style:none}body::-webkit-scrollbar{display:none}::selection{background:var(--color-text);color:var(--color-background)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ease{syntax:"*";inherits:false}