@font-face{font-family:Playfair Variable;src:url(/fonts/PlayfairRomanVF.woff2) format("woff2");font-style:normal;font-weight:400 900;font-display:swap}@font-face{font-family:Playfair Variable;src:url(/fonts/PlayfairItalicVF.woff2) format("woff2");font-style:italic;font-weight:400 900;font-display:swap}:root{color-scheme:light;--bg: #ffffff;--fg: #1a1a1a;--muted: rgba(26, 26, 26, .66);--soft: rgba(26, 26, 26, .24);--softest: rgba(26, 26, 26, .08);--header-height: 120px;--section-bar-height: 120px;--page-gutter: 40px;--hero-weight: 432;--hero-opsz: 411;--hero-track: .015em;--viewer-inline-pad: clamp(10px, 2.8vw, 32px);--viewer-top-pad: clamp(14px, 3.2vh, 28px);--viewer-bottom-pad: clamp(14px, 3.2vh, 28px);--viewer-gap: clamp(10px, 1.8vh, 18px);--viewer-thumb-limit: clamp(38px, 4.6vw, 64px);background:var(--bg);color:var(--fg);font-family:Inter,Noto Sans SC,sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#app{width:100%;min-height:100%;margin:0}body{overflow:hidden;background:var(--bg);color:var(--fg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,a{color:inherit}button{font:inherit}a{text-decoration:none}img{display:block;width:100%;height:auto}.app-shell{position:relative;min-height:100svh;background:var(--bg)}.section-cursor{position:fixed;top:0;left:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:15px 20px;border-radius:999px;background:#000;color:#fff;pointer-events:none;opacity:0;will-change:transform,opacity}.section-cursor__label{font-size:16px;font-weight:500;line-height:normal;white-space:nowrap}.site-header{position:fixed;top:0;left:0;z-index:40;display:flex;width:100%;height:var(--header-height);align-items:center;justify-content:flex-end;padding:0 var(--page-gutter);pointer-events:none;transition:opacity .24s ease,visibility .24s ease}.locale-link{display:inline-flex;width:30px;height:25px;align-items:center;justify-content:center;background:var(--fg);color:var(--bg);font-family:Open Sans,Noto Sans SC,sans-serif;font-size:10px;font-weight:700;line-height:1;letter-spacing:0;pointer-events:auto}.app-shell[data-open-section]:not([data-open-section=""]) .site-header{opacity:0;visibility:hidden}.hero-layer{position:relative;z-index:1;display:grid;min-height:100svh;place-items:center;padding:var(--header-height) var(--page-gutter) calc(var(--section-bar-height) * 2)}.hero-lockup{display:grid;width:min(100%,1100px);justify-items:center;gap:10px;transform:translateY(-40px);text-align:center}.hero-name{margin:0;display:inline-flex;align-items:flex-start;gap:.08em;font-family:Playfair Variable,Playfair Display,Georgia,serif;font-size:clamp(4.5rem,8.9vw,8rem);font-weight:var(--hero-weight);line-height:1;letter-spacing:calc(var(--hero-track) + .015em);text-transform:uppercase;font-variation-settings:"wght" var(--hero-weight),"opsz" var(--hero-opsz);font-optical-sizing:auto;white-space:nowrap;will-change:font-variation-settings}.hero-name__word{display:inline-flex;align-items:flex-start}.hero-name__initial,.hero-name__rest{font-family:inherit;font-weight:inherit;font-variation-settings:inherit;font-optical-sizing:inherit}.hero-name__initial{font-size:1em;line-height:1}.hero-name__rest{display:inline-block;font-size:.82em;line-height:1.08;letter-spacing:.04em;transform:translateY(.08em)}.hero-tagline{margin:0;width:100%;font-family:Playfair Variable,Playfair Display,Georgia,serif;font-size:clamp(1.5rem,2.25vw,2rem);font-style:italic;font-weight:500;line-height:1.2;color:var(--fg);text-align:center}.hero-tagline[lang^=zh]{font-family:"Noto Serif SC",Songti SC,serif;font-style:normal;font-weight:500}.section-panels{position:relative;z-index:20}.section-panel{position:fixed;inset:0;display:grid;grid-template-rows:var(--section-bar-height) minmax(0,1fr);background:transparent;pointer-events:none}.section-panel--resume{z-index:22}.section-panel--portfolio{z-index:21}.section-panel.is-open{background:var(--bg);box-shadow:0 -12px 40px #1a1a1a0a;z-index:30}.section-panel.is-open .section-bar{border-top-color:transparent;border-bottom:1px solid var(--soft)}.section-bar{display:flex;width:100%;align-items:center;justify-content:space-between;border:0;border-top:1px solid var(--soft);background:var(--bg);padding:10px var(--page-gutter);text-align:left;cursor:pointer;pointer-events:auto}.section-bar.is-cursor-active,.project-gallery__trigger.is-cursor-active{cursor:none}.section-bar__title{font-family:Playfair Display SC,Playfair Display,Georgia,serif;font-size:clamp(3rem,4.45vw,4rem);font-weight:400;line-height:1}.section-bar__arrow{display:inline-flex;align-items:center;justify-content:center;font-family:Inter,Noto Sans SC,sans-serif;font-size:clamp(3rem,4.45vw,4rem);font-weight:200;line-height:1;transform-origin:center center}.section-panel__body{min-height:0;overflow:auto;opacity:0;pointer-events:auto}.section-panel__body[aria-hidden=true]{pointer-events:none}.section-panel__inner{min-height:100%;padding:30px var(--page-gutter) 44px}.section-panel__inner--portfolio{padding:0 0 44px}.resume-layout{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:40px}.portfolio-layout{display:block}.section-copy{display:flex;flex-direction:column;gap:14px;padding-top:8px}.section-copy__eyebrow{margin:0;color:var(--muted);font-size:12px;letter-spacing:.16em;text-transform:uppercase}.section-copy__body{max-width:18rem;margin:0;line-height:1.72;color:#1a1a1ac2}.resume-groups{display:grid;gap:20px}.resume-group{display:grid;grid-template-columns:minmax(110px,140px) minmax(0,1fr);gap:22px;border-top:1px solid var(--softest);padding-top:18px}.resume-group__title{margin:0;font-family:Inter,Noto Sans SC,sans-serif;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.resume-group__lines{display:grid;gap:10px}.resume-group__lines p{margin:0;line-height:1.76}.project-list{display:flex;min-height:0;flex-direction:column;list-style:none;margin:0;padding:0}.project-card{min-height:120px;border-bottom:1px solid var(--soft);padding:20px var(--page-gutter);opacity:.3}.project-card.is-active{opacity:1}.project-card__summary{display:flex;width:100%;align-items:flex-start;justify-content:space-between;gap:32px;border:0;background:transparent;padding:0;text-align:left;cursor:pointer}.project-card__summary[aria-disabled=true]{cursor:default}.project-card__logo{display:flex;min-height:82px;align-items:center;flex:0 0 auto}.project-logo{position:relative;display:block}.project-logo--abmac{width:min(200px,100%);aspect-ratio:200 / 65}.project-logo__part{position:absolute}.project-logo__part img{display:block;width:100%;height:100%}.project-logo__part--vector-a{inset:50.76% 0 0 87.06%}.project-logo__part--vector-b{inset:50.76% 14.6% .02% 72.04%}.project-logo__part--vector-c{inset:50.72% 30.28% 1.07% 47.09%}.project-logo__part--vector-d{inset:24.86% 55.56% .07% 30.35%}.project-logo__part--vector-e{inset:50.76% 72.42% .02% 14.23%}.project-logo__part--vector-f{inset:0 74.18% 1.07% 0}.project-logo__image{display:block;width:100%;height:100%;object-fit:contain}.project-logo__image--treeing{width:min(176px,100%);height:auto;aspect-ratio:176 / 82}.project-logo__image--dewey{width:min(237px,100%);height:auto;aspect-ratio:237 / 65}.project-logo--placeholder{display:inline-flex;align-items:center;justify-content:center;border:1px dashed rgba(26,26,26,.24);background:linear-gradient(135deg,#1a1a1a08,#1a1a1a03),var(--bg)}.project-logo__placeholder-text{color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.24em;line-height:1;text-transform:uppercase}.project-card__meta{display:block;flex:1 1 auto;padding-top:6px;font-size:clamp(1rem,1.67vw,1.5rem);font-weight:400;line-height:1.16;text-align:right}.project-card__detail{height:0;overflow:hidden;opacity:0}.project-card__detail-inner{display:grid;gap:40px;padding-top:40px}.project-card__description{display:grid;gap:0;max-width:50rem;font-size:clamp(1.125rem,1.67vw,1.5rem);font-weight:400;line-height:1.16}.project-card__description p{margin:0}.project-card__gallery{display:flex;gap:40px;align-items:flex-start;overflow-x:auto;padding-bottom:8px;scrollbar-width:none}.project-card__gallery::-webkit-scrollbar{display:none}.project-gallery__trigger{flex:0 0 auto;border:0;background:transparent;padding:0;cursor:pointer}.project-gallery__trigger.is-viewer-origin-hidden .project-gallery__image{opacity:0}.project-gallery__item{display:block;width:100%;height:100%;overflow:hidden;border:.5px solid rgba(26,26,26,.4);background:var(--bg)}.project-gallery__item--placeholder{margin:0}.project-gallery__media,.image-viewer__thumb-media{position:relative;display:block;width:100%;height:100%;overflow:hidden;background:var(--bg)}.project-gallery__image,.image-viewer__thumb-image{width:100%;height:100%;object-fit:cover}.project-gallery__image--overflow,.image-viewer__thumb-image--overflow{position:absolute;top:.36%;left:-.08%;width:100%;height:auto;max-width:none;min-height:420.74%}.project-gallery__placeholder{display:block;width:100%;height:100%;border:1px dashed rgba(26,26,26,.2);background:linear-gradient(135deg,#1a1a1a09,#1a1a1a03),repeating-linear-gradient(135deg,transparent 0,transparent 20px,rgba(26,26,26,.04) 20px,rgba(26,26,26,.04) 40px)}.image-viewer{position:fixed;inset:0;z-index:70;pointer-events:none;visibility:hidden;opacity:0}.image-viewer.is-open{pointer-events:auto;visibility:visible}.image-viewer__mask{position:absolute;inset:0;background:#00000080}.image-viewer__layout{position:relative;z-index:1;display:grid;width:100%;height:100%;place-content:center;place-items:center;gap:var(--viewer-gap);padding:var(--viewer-top-pad) var(--viewer-inline-pad) var(--viewer-bottom-pad)}.image-viewer__frame{position:relative;width:auto;height:auto;max-width:calc(100vw - (var(--viewer-inline-pad) * 2));max-height:min(calc(88svh - var(--viewer-thumb-limit) - var(--viewer-gap)),calc(100svh - var(--viewer-top-pad) - var(--viewer-bottom-pad) - var(--viewer-thumb-limit) - var(--viewer-gap)));overflow:hidden;background:#fff;will-change:transform,opacity}.image-viewer__media-layer{position:absolute;inset:0}.image-viewer__slide{position:absolute;inset:0;pointer-events:none}.image-viewer__slide.is-active{pointer-events:auto}.image-viewer__frame-inner,.image-viewer__media{display:block;width:100%;height:100%}.image-viewer__media{position:relative;background:#fff}.image-viewer__image{width:100%;height:100%;object-fit:contain;background:#fff}.image-viewer__switcher{position:relative;z-index:1;width:min(100%,500px);will-change:transform,opacity}.image-viewer__thumbs{display:flex;gap:18px;align-items:center;justify-content:center;overflow-x:auto;padding:0 2px 6px;scrollbar-width:none}.image-viewer__thumbs::-webkit-scrollbar{display:none}.image-viewer__thumb{flex:0 0 auto;border:0;background:transparent;padding:0;opacity:.56;transform:translateY(0);transition:opacity .22s ease,transform .28s ease;cursor:pointer}.image-viewer__thumb:hover,.image-viewer__thumb.is-active{opacity:1}.image-viewer__thumb.is-active{transform:translateY(-2px)}.image-viewer__thumb-frame{display:block;width:100%;height:100%}.locale-link:focus-visible,.section-bar:focus-visible,.project-card__summary:focus-visible,.project-gallery__trigger:focus-visible,.image-viewer__thumb:focus-visible{outline:2px solid var(--fg);outline-offset:3px}@media(max-width:900px){:root{--header-height: 96px;--section-bar-height: 96px;--page-gutter: 24px}.hero-lockup{transform:translateY(-20px)}.resume-layout,.resume-group{grid-template-columns:1fr}.section-panel__inner--portfolio{padding-bottom:28px}.project-card{min-height:auto}.project-card__summary{flex-direction:column;align-items:flex-start;gap:20px}.project-card__logo{min-height:auto}.project-card__meta{padding-top:0;text-align:left}.project-card__detail-inner{gap:24px;padding-top:28px}.project-card__description{max-width:none}.project-card__gallery{gap:20px}.image-viewer__thumbs{gap:12px;justify-content:flex-start}}@media(max-width:640px){:root{--header-height: 82px;--section-bar-height: 88px;--page-gutter: 18px}.locale-link{width:36px;height:28px;font-size:11px}.hero-name{font-size:clamp(3.2rem,16vw,5.4rem)}.hero-tagline{font-size:clamp(1.1rem,5.5vw,1.6rem)}.section-panel__inner{padding-top:22px;padding-bottom:28px}.section-panel__inner--portfolio{padding-top:0}.section-copy__body{max-width:none}.project-card{padding-top:18px;padding-bottom:18px}.project-card__summary{gap:16px}.project-card__gallery{gap:14px}.image-viewer__layout{gap:16px}.image-viewer__thumbs{gap:8px}}@media(pointer:coarse){.section-cursor{display:none}}@media(pointer:fine){.image-viewer.is-cursor-active{cursor:none}}
