.glass-surface{--glass-light-x:22%;--glass-light-y:0%;justify-content:center;align-items:center;transition:opacity .26s ease-out;display:flex;position:relative;overflow:hidden}.glass-surface__filter{z-index:-1;pointer-events:none;opacity:0;width:100%;height:100%;position:absolute;inset:0}.glass-surface__content{z-index:1;border-radius:inherit;justify-content:center;align-items:center;width:100%;height:100%;padding:.5rem;display:flex;position:relative}.glass-surface--svg{--glass-rim:light-dark(color-mix(in oklab, var(--ink) 14%, transparent),color-mix(in oklab, var(--accent) 12%, transparent));--glass-edge-soft:light-dark(color-mix(in oklab, var(--paper) 24%, transparent),color-mix(in oklab, var(--ink) 8%, transparent));background:light-dark(hsl(0 0% 100%/var(--glass-frost,0)),hsl(0 0% 0%/var(--glass-frost,0)));backdrop-filter:var(--filter-id,url(#glass-filter)) saturate(var(--glass-saturation,1)) brightness(1.04);box-shadow:0 0 0 1px var(--glass-rim) inset, 0 0 10px 2px var(--glass-edge-soft) inset, 0 8px 18px light-dark(#584a3a0d,color-mix(in oklab, var(--paper) 18%, transparent))}.site-header__glass.glass-surface--svg{background:light-dark(hsl(0 0% 100%/var(--glass-frost,0)),hsl(0 0% 0%/var(--glass-frost,0)));backdrop-filter:blur(14px) saturate(var(--glass-saturation,1)) brightness(1.02)}.site-header__glass.glass-surface--svg:before{z-index:0;box-sizing:border-box;border-radius:inherit;pointer-events:none;content:"";backdrop-filter:var(--filter-id) saturate(var(--glass-saturation,1));-webkit-mask-composite:xor;padding:3px;position:absolute;inset:0;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-position:0 0,0 0;mask-size:auto,auto;mask-repeat:repeat,repeat;mask-clip:content-box,border-box;mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.glass-surface--fallback{background:color-mix(in oklab, var(--paper) 42%, transparent);-webkit-backdrop-filter:blur(26px)saturate(1.58)brightness(1.12)contrast(.98);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.92), inset 0 -1px 0 color-mix(in oklab, var(--ink) 13%, transparent), inset 0 0 14px oklab(100% 0 5.96046e-8/.24), 0 1px 1px color-mix(in oklab, var(--ink) 5%, transparent), 0 16px 42px color-mix(in oklab, var(--ink) 14%, transparent);border:1px solid oklab(100% 0 5.96046e-8/.76)}.site-header__glass.glass-surface--fallback{background:color-mix(in oklab, var(--paper) 31%, transparent);-webkit-backdrop-filter:blur(30px)saturate(1.72)brightness(1.08)contrast(.98);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.96), inset 0 -1px 0 color-mix(in oklab, var(--ink) 10%, transparent), inset 0 0 24px oklab(100% 0 5.96046e-8/.2), 0 1px 1px color-mix(in oklab, var(--ink) 5%, transparent), 0 18px 44px color-mix(in oklab, var(--ink) 12%, transparent);border-color:oklab(100% 0 5.96046e-8/.84)}.site-header__glass.glass-surface--fallback:after{opacity:.88}.glass-surface--fallback:before,.glass-surface--fallback:after{border-radius:inherit;pointer-events:none;content:"";position:absolute}.glass-surface--fallback:before{z-index:2;background:radial-gradient(110px 54px at var(--glass-light-x) var(--glass-light-y), #fffffff5, #ffffff3d 44%, transparent 72%), conic-gradient(from 205deg at 50% 50%, #ffffffc2, transparent 17%, #ffffff2e 39%, transparent 58%, #ffffff94 82%, transparent);opacity:.92;-webkit-mask-composite:xor;padding:1.5px;inset:-1px;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-position:0 0,0 0;mask-size:auto,auto;mask-repeat:repeat,repeat;mask-clip:content-box,border-box;mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.glass-surface--fallback:after{z-index:0;background:radial-gradient(130px 76px at var(--glass-light-x) var(--glass-light-y), #ffffff85, transparent 68%), linear-gradient(112deg, #ffffff38, transparent 27% 68%, #ffffff1f);opacity:.72;mix-blend-mode:soft-light;transition:opacity .24s cubic-bezier(.23,1,.32,1);inset:1px}.glass-surface--fallback.is-glass-active:after{opacity:1}:root[data-theme=dark] .glass-surface--fallback{border-color:color-mix(in oklab, var(--ink) 28%, transparent);background:color-mix(in oklab, var(--paper) 48%, transparent);-webkit-backdrop-filter:blur(26px)saturate(1.42)brightness(1.06);box-shadow:inset 0 1px 0 color-mix(in oklab, var(--ink) 30%, transparent), inset 0 -1px 0 #00000057, inset 0 0 16px color-mix(in oklab, var(--ink) 8%, transparent), 0 18px 48px #00000057}:root[data-theme=dark] .site-header__glass.glass-surface--fallback{background:color-mix(in oklab, var(--paper) 38%, transparent);-webkit-backdrop-filter:blur(30px)saturate(1.56)brightness(1.08);box-shadow:inset 0 1px 0 color-mix(in oklab, var(--ink) 36%, transparent), inset 0 -1px 0 #00000047, inset 0 0 22px color-mix(in oklab, var(--ink) 7%, transparent), 0 18px 44px #00000047}:root[data-theme=dark] .glass-surface--fallback:before{background:radial-gradient(110px 54px at var(--glass-light-x) var(--glass-light-y), #ffffffa3, #ffffff1f 45%, transparent 72%), conic-gradient(from 205deg at 50% 50%, #ffffff5c, transparent 18%, #ffffff1a 40%, transparent 60%, #ffffff47 82%, transparent)}@supports not (backdrop-filter:blur(10px)){.glass-surface--fallback{background:#fff6;box-shadow:0 0 0 .5px #ffffff38}.glass-surface--fallback:after{background:#ffffff26}}@media (prefers-reduced-motion:reduce){.glass-surface--fallback:after{transition:none}}:root{color-scheme:light;--ink:oklch(20% .014 75);--muted:oklch(55% .018 75);--paper:oklch(97.5% .003 255);--hairline:oklch(80% .015 75/.72);--accent:oklch(55% .13 52);--code-paper:oklch(94% .006 85);--code-ink:oklch(25% .01 75);--media-placeholder:oklch(89% .014 85);--cursor-color:var(--paper);--cursor-icon-color:var(--ink);--control-size:40px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--motion-page-reveal:.5s;--motion-reveal:.42s;--text-home-title:clamp(3.25rem, 5.7vw, 5.5rem);--text-page-title:clamp(1.5rem, 3vw, 2.75rem);--text-feature-title:clamp(2rem, 3.6vw, 3.4rem);--text-article-title:clamp(2rem, 3.2vw, 3rem);--serif:"Iowan Old Style", "Source Han Serif SC", "Songti SC", STSong, serif;--sans:"Avenir Next", "Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", sans-serif}:root[data-theme=dark]{color-scheme:dark;--ink:oklch(93% .01 85);--muted:oklch(73% .014 85);--paper:oklch(16% .012 72);--hairline:oklch(42% .014 72/.72);--accent:oklch(77% .1 72);--code-paper:oklch(21% .012 72);--code-ink:oklch(93% .01 85);--media-placeholder:oklch(24% .012 72);--cursor-color:var(--ink);--cursor-icon-color:var(--paper)}:root.is-theme-switching body{transition:none}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:clamp(80px,8vw,112px);overflow:clip auto}body{min-width:320px;min-height:100vh;color:var(--ink);background:var(--paper);background-image:radial-gradient(color-mix(in oklab, var(--ink) 17%, transparent) .7px, transparent .8px);font-family:var(--sans);background-size:13px 13px;margin:0;font-size:16px;line-height:1.6;transition:color .18s,background-color .18s;overflow-x:hidden}a{color:inherit;text-decoration:none}a:hover,.theme-toggle:hover{color:var(--accent)}.skip-link{z-index:20;border:1px solid var(--ink);color:var(--paper);background:var(--ink);transition:transform .16s var(--ease-out);padding:8px 12px;position:fixed;top:10px;left:10px;transform:translateY(-150%)}.skip-link:focus{transform:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.localized-text__en,:root[data-locale=en] .localized-text__zh{display:none}:root[data-locale=en] .localized-text__en{display:inline}.site-page{isolation:isolate;opacity:0;transition:opacity .72s var(--ease-out);background:0 0;position:relative}.site-page.is-visible{opacity:1}.ambient-flow{z-index:0;pointer-events:none;opacity:1;transform-origin:50%;width:100%;height:100%;transition:opacity .18s var(--ease-out);display:block;position:fixed;inset:0;transform:scale(1.035)}.ambient-flow.is-switching{opacity:.28}.ambient-flow--fallback{background:radial-gradient(ellipse at 24% 32%, color-mix(in oklab, var(--ink) 8%, transparent), transparent 46%), radial-gradient(ellipse at 78% 66%, color-mix(in oklab, var(--ink) 7%, transparent), transparent 48%)}.site-header{z-index:9;top:max(14px, env(safe-area-inset-top));width:max-content;max-width:calc(100% - 40px);position:fixed;left:50%;transform:translate(-50%)}main{z-index:1;position:relative}.intro-overlay{z-index:10;color:var(--ink);opacity:1;transition:opacity .36s var(--ease-out);position:fixed;inset:0;overflow:hidden}.intro-screen{shape-rendering:geometricprecision;width:100%;height:100%;display:block}.intro-field{fill:var(--paper)}.intro-grid{color:var(--ink);opacity:.22}.intro-mark__motion{transform-box:fill-box;transform-origin:43.6%;animation:logo-zoom 1.55s var(--ease-in-out) 1s forwards;will-change:transform}.intro-mark__line{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;vector-effect:none;stroke-dasharray:1;stroke-dashoffset:1px;animation:logo-draw .96s var(--ease-out) forwards}.intro-mark__cutout{fill:#000;opacity:0;animation:logo-mask .18s var(--ease-out) .96s forwards}.intro-overlay.is-exiting{pointer-events:none;opacity:0}.site-header{min-height:56px;color:var(--ink);box-shadow:none;isolation:isolate;background:0 0;border-radius:999px;align-items:center;padding:6px;display:flex}.site-header__glass{pointer-events:none;inset:0;z-index:0!important;width:100%!important;height:100%!important;display:block!important;position:absolute!important}.site-header>.monogram,.site-header>.mobile-nav-toggle,.site-header>.site-nav{z-index:1;position:relative}.monogram{width:44px;height:44px;color:inherit;background:color-mix(in oklab, var(--paper) 34%, transparent);cursor:pointer;box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.6), inset 0 -1px 0 color-mix(in oklab, var(--ink) 9%, transparent), 0 0 0 1px color-mix(in oklab, var(--ink) 7%, transparent);transition:background-color .18s ease, opacity .14s var(--ease-out), transform .18s var(--ease-out);border:0;border-radius:50%;place-items:center;margin-right:5px;padding:0;display:grid}.monogram:hover{background:oklab(100% 0 5.96046e-8/.42);transform:scale(1.035)}.monogram:active,.monogram.is-cycling{opacity:.72;transform:scale(.9)}.monogram:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.monogram img{object-fit:contain;width:21px;height:21px;transition:filter .18s;display:block}:root[data-theme=dark] .monogram img{filter:invert()contrast(.9)}.site-nav{color:var(--muted);align-items:center;gap:3px;font-size:.84rem;display:flex}.mobile-nav-toggle{display:none}.nav-menu{margin:-3px -5px;padding:3px 5px;position:relative}.nav-menu__trigger{border-radius:999px;align-items:center;min-height:46px;margin:0;padding:3px 5px 3px 2px;transition:background-color .18s;display:inline-flex}.nav-menu__trigger:hover,.nav-menu__trigger:has(.is-keyword-destination),.nav-menu.is-open .nav-menu__trigger,.nav-menu__trigger:has(.nav-link.is-active){background:color-mix(in oklab, var(--paper) 38%, transparent);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.58), inset 0 -1px 0 color-mix(in oklab, var(--ink) 8%, transparent)}.nav-link{white-space:nowrap;align-items:center;height:40px;padding:0 7px 0 14px;display:inline-flex;position:relative}.nav-link.is-active{color:var(--ink)}.nav-disclosure{width:44px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.nav-disclosure svg{transition:transform .18s var(--ease-out)}.nav-disclosure[aria-expanded=true]{color:var(--ink)}.nav-disclosure[aria-expanded=true] svg{transform:rotate(180deg)}.nav-menu:after{z-index:3;content:"";height:32px;position:absolute;top:calc(100% - 6px);left:-24px;right:-24px}.nav-popover{z-index:4;background:color-mix(in oklab, var(--paper) 82%, transparent);width:286px;box-shadow:0 18px 46px color-mix(in oklab, var(--ink) 14%, transparent), inset 0 1px 0 oklab(100% 0 5.96046e-8/.7);backdrop-filter:blur(24px)saturate(1.12);opacity:0;pointer-events:none;transition:opacity .16s ease, transform .18s var(--ease-out);border:1px solid oklab(100% 0 5.96046e-8/.55);border-radius:20px;padding:7px;display:grid;position:absolute;top:calc(100% + 8px);left:0;transform:translateY(-7px)}.nav-menu.is-open .nav-popover{opacity:1;pointer-events:auto;transform:none}.nav-popover a{min-height:44px;transition:background-color .15s ease, transform .18s var(--ease-out);border-radius:13px;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:0 10px;padding:10px 13px;display:grid}.nav-popover a:hover{color:var(--ink);background:color-mix(in oklab, var(--ink) 6%, transparent);transform:translate(2px)}.nav-popover small{color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:.08em;font-size:.6rem}.nav-popover span{font-size:.8rem;font-weight:550;line-height:1.3}.nav-link:focus-visible,.nav-disclosure:focus-visible,.icon-link:focus-visible,.language-toggle:focus-visible,.theme-toggle:focus-visible,.mobile-nav-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.nav-divider{background:color-mix(in oklab, var(--ink) 12%, transparent);width:1px;height:13px}.nav-utilities{background:color-mix(in oklab, var(--paper) 30%, transparent);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.52), inset 0 -1px 0 color-mix(in oklab, var(--ink) 8%, transparent), 0 0 0 1px color-mix(in oklab, var(--ink) 5%, transparent);border-radius:999px;align-items:center;gap:0;margin-left:5px;padding:2px;display:flex}.icon-link,.language-toggle,.theme-toggle{box-sizing:border-box;width:var(--control-size);min-width:var(--control-size);height:var(--control-size);flex:0 0 var(--control-size);aspect-ratio:1;color:var(--muted);transition:color .18s ease, transform .18s var(--ease-out);place-items:center;line-height:1;display:grid}.icon-link{cursor:pointer}.icon-link,.language-toggle,.theme-toggle{border-radius:50%}.icon-link:hover,.icon-link.is-keyword-destination,.language-toggle:hover,.theme-toggle:hover{color:var(--ink);background:color-mix(in oklab, var(--paper) 70%, transparent);transform:translateY(-1px)}.icon-link svg,.icon-link img{display:block}.icon-link--brand img{width:14.5px;height:14.5px}.icon-link--github img{width:15.5px;height:15.5px}:root[data-theme=dark] .icon-link--github img{filter:invert()}.theme-toggle{cursor:pointer;background:0 0;border:0;padding:0}.language-toggle{width:var(--control-size);min-width:var(--control-size);color:var(--muted);cursor:pointer;font-family:var(--sans);letter-spacing:.04em;background:0 0;border:0;padding:0;font-size:.72rem;font-weight:650}.theme-toggle>svg{grid-area:1/1}.theme-toggle .theme-icon__moon,:root[data-theme=dark] .theme-toggle .theme-icon__sun{display:none}:root[data-theme=dark] .theme-toggle .theme-icon__moon{display:block}.icon-link.is-active{color:var(--ink)}:root[data-theme=dark] .nav-popover{border-color:color-mix(in oklab, var(--ink) 14%, transparent);background:color-mix(in oklab, var(--paper) 86%, transparent);box-shadow:0 20px 50px #0000004d, inset 0 1px 0 color-mix(in oklab, var(--ink) 10%, transparent)}.catalog-site{min-height:100vh}.catalog-main{padding-top:18px;padding-inline:clamp(20px,2.5vw,36px);background:0 0;width:min(100% - 48px,1180px);min-height:calc(100vh - 162px);margin:0 auto;padding-bottom:clamp(80px,10vw,132px)}.catalog-hero{border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(240px,.48fr);align-items:end;gap:20px 8vw;padding:clamp(74px,10vw,142px) 0 clamp(44px,6vw,76px);display:grid}.catalog-hero__kicker,.archive-hero>p{color:var(--accent);letter-spacing:.13em;text-transform:uppercase;font-size:.66rem;font-weight:650}.catalog-hero h1,.archive-hero h1{font-family:var(--sans);font-size:var(--text-page-title);letter-spacing:-.085em;grid-column:1;margin:0;font-weight:650;line-height:.82}.catalog-hero__kicker{grid-column:1;margin:0 0 -4px}.catalog-hero__intro{max-width:28ch;color:var(--muted);font-family:var(--serif);grid-area:2/2;margin:0;font-size:clamp(1rem,1.35vw,1.16rem);line-height:1.7}.catalog-sections{background:0 0;padding-top:clamp(48px,8vw,104px)}.catalog-section{border-bottom:1px solid var(--hairline);grid-template-columns:minmax(200px,.7fr) minmax(0,1fr);gap:24px clamp(30px,6vw,98px);padding:clamp(42px,6vw,78px) 0;scroll-margin-top:28px;display:grid}.catalog-section:first-child{padding-top:0}.catalog-section--media{grid-template-columns:minmax(0,1.08fr) minmax(300px,.92fr);align-items:center;gap:clamp(34px,6vw,86px)}.catalog-section--media:nth-child(2n) .catalog-section__media{grid-column:2}.catalog-section--media:nth-child(2n) .catalog-section__content{grid-area:1/1}.catalog-section__media{margin:0;overflow:hidden}.catalog-section__media img{aspect-ratio:16/9;object-fit:cover;width:100%;height:auto;transition:transform .6s var(--ease-out);display:block}.catalog-section--media:hover .catalog-section__media img{transform:scale(1.018)}.catalog-section__content{min-width:0}.catalog-section h2{letter-spacing:-.055em;margin:0;font-size:clamp(1.65rem,3vw,2.55rem);font-weight:600;line-height:1}.catalog-section div>p{color:var(--muted);font-family:var(--serif);margin:14px 0 0;font-size:.96rem;line-height:1.7}.catalog-section ul{gap:0;margin:clamp(24px,3vw,36px) 0 0;padding:0;list-style:none;display:grid}.catalog-section li{border-top:1px solid var(--hairline);padding:12px 0;font-size:.92rem;line-height:1.5}.catalog-section li:last-child{border-bottom:1px solid var(--hairline)}.catalog-section__external{color:var(--ink);justify-content:space-between;align-items:center;gap:16px;transition:color .18s;display:flex}.catalog-section__external:hover{color:var(--accent)}.catalog-section__external .icon{flex:none}.catalog-section__item-copy{gap:5px;min-width:0;display:grid}.catalog-section__item-copy small{color:var(--accent);letter-spacing:.075em;text-transform:uppercase;font-size:.68rem;font-weight:650;line-height:1.2}.catalog-section__item-copy strong{letter-spacing:-.025em;font-size:1.04rem;font-weight:560}.catalog-section__item-copy>span{max-width:60ch;color:var(--muted);font-family:var(--serif);font-size:.86rem;line-height:1.55}.catalog-section--detailed{grid-template-columns:minmax(210px,.62fr) minmax(0,1.38fr);align-items:start}.catalog-section--detailed .catalog-section__content{grid-column:1/-1;grid-template-columns:minmax(210px,.62fr) minmax(0,1.38fr);column-gap:clamp(30px,6vw,98px);display:grid}.catalog-section--detailed .catalog-section__content>p{grid-column:1;max-width:31ch}.catalog-section--detailed .catalog-section__content>ul{grid-area:1/2/span 2;margin-top:0}.catalog-section--detailed li{padding:20px 0}.catalog-section--detailed .catalog-section__external{align-items:center}.skill-feature{padding:0 0 clamp(58px,8vw,108px);scroll-margin-top:28px}.skill-feature__header{grid-template-columns:minmax(280px,1.08fr) minmax(280px,.92fr);align-items:end;gap:clamp(36px,7vw,112px);display:grid}.skill-feature__eyebrow{color:var(--accent);letter-spacing:.09em;text-transform:uppercase;margin-bottom:15px;font-size:.7rem;font-weight:650;display:block}.skill-feature h2{letter-spacing:-.072em;margin:0;font-size:clamp(2.2rem,5vw,4.8rem);font-weight:650;line-height:.91}.skill-feature__title>p{max-width:48ch;color:var(--muted);font-family:var(--serif);margin:20px 0 0;font-size:1rem;line-height:1.7}.skill-feature__summary>p{color:var(--ink);margin:0;font-size:clamp(.96rem,1.35vw,1.1rem);line-height:1.7}.skill-feature__repository{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);color:var(--ink);transition:color .18s ease, padding .26s var(--ease-out);justify-content:space-between;align-items:center;gap:18px;margin-top:28px;padding:14px 0;font-size:.86rem;font-weight:620;display:flex}.skill-feature__repository:hover{color:var(--accent);padding-left:8px;padding-right:8px}.skill-feature__facts{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);grid-template-columns:repeat(3,minmax(0,1fr));margin:clamp(42px,6vw,72px) 0 clamp(24px,3vw,38px);display:grid}.skill-feature__facts>div{padding:18px 20px 19px 0}.skill-feature__facts>div+div{border-left:1px solid var(--hairline);padding-left:20px}.skill-feature__facts dt{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.66rem}.skill-feature__facts dd{letter-spacing:-.02em;margin:6px 0 0;font-size:.94rem;font-weight:590}.skill-project{grid-template-columns:minmax(0,1.5fr) minmax(250px,.62fr);align-items:center;gap:clamp(34px,5.5vw,82px);padding:clamp(18px,2vw,30px) 0 clamp(64px,8vw,106px);scroll-margin-top:28px;display:grid}.skill-project__media{aspect-ratio:16/9;border:1px solid color-mix(in oklab, var(--ink) 14%, transparent);background:var(--media-placeholder);min-width:0;display:block;position:relative;overflow:hidden}.skill-project__cover{object-fit:cover;width:100%;height:100%;transition:opacity .22s ease, transform .52s var(--ease-out);display:block;position:absolute;inset:0}.skill-project__cover--dark,:root[data-theme=dark] .skill-project__cover--light{opacity:0}:root[data-theme=dark] .skill-project__cover--dark{opacity:1}.skill-project__media:hover .skill-project__cover,.skill-project__media:focus-visible .skill-project__cover{transform:scale(1.012)}.skill-project__media:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skill-project__content{min-width:0}.skill-project__eyebrow{color:var(--accent);letter-spacing:.085em;text-transform:uppercase;margin-bottom:13px;font-size:.68rem;font-weight:650;display:block}.skill-project h2{letter-spacing:-.065em;max-width:9ch;margin:0;font-size:clamp(2rem,4.2vw,4rem);font-weight:650;line-height:.94}.skill-project__content>p{max-width:38ch;color:var(--muted);font-family:var(--serif);margin:20px 0 0;font-size:.94rem;line-height:1.68}.skill-project__repository{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);color:var(--ink);transition:color .18s ease, padding .26s var(--ease-out);justify-content:space-between;align-items:center;gap:16px;margin-top:27px;padding:13px 0;font-size:.8rem;font-weight:620;display:flex}.skill-project__repository:hover{color:var(--accent);padding-left:6px;padding-right:6px}.skill-project__repository:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skill-project__repository .icon{flex:none}.skill-gallery__stage{position:relative}.skill-gallery__toolbar{z-index:30;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.skill-gallery__shuffle{border:1px solid color-mix(in oklab, var(--ink) 28%, transparent);width:42px;height:42px;color:var(--ink);background:color-mix(in oklab, var(--paper) 92%, transparent);cursor:pointer;font:inherit;transition:color .18s ease, background-color .18s ease, border-color .18s ease, transform .18s var(--ease-out);border-radius:50%;flex:none;place-items:center;padding:0;display:inline-grid}.skill-gallery__shuffle:hover{border-color:var(--ink);background:color-mix(in oklab, var(--paper) 88%, var(--ink));transform:translateY(-1px)}.skill-gallery__shuffle:active{transform:scale(.96)}.skill-gallery__shuffle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skill-gallery__shuffle .icon{transition:transform .52s var(--ease-out)}.skill-gallery__shuffle.is-shuffling .icon{transform:rotate(180deg)}.skill-gallery{perspective:900px;isolation:isolate;height:clamp(330px,34vw,420px);margin:0;padding:0;list-style:none;position:relative}.skill-gallery>li{width:min(78%,760px);min-width:0;opacity:var(--skill-card-opacity,0);z-index:var(--skill-card-z,1);pointer-events:none;transform:translate3d(calc(-50% + var(--skill-stack-x,0px) + var(--skill-drag-x,0px)), calc(-50% + var(--skill-stack-y,0px) + var(--skill-drag-y,0px)), 0) rotate(calc(var(--skill-stack-rotate,0deg) + var(--skill-drag-rotate,0deg))) scale(var(--skill-stack-scale,.9));transform-origin:88% 88%;transition:opacity .26s ease, transform .42s var(--ease-out);will-change:transform;position:absolute;top:50%;left:50%}.skill-gallery>li:first-child{--skill-card-opacity:1;--skill-card-z:1}.skill-gallery>li[data-skill-active=true]{pointer-events:auto}.skill-gallery>li.is-dragging{transition-duration:0s}.skill-gallery>li.is-leaving{opacity:0;transition-duration:.22s}.skill-gallery.is-static>li{transition-duration:.01ms;transition-delay:0s}.skill-gallery__item{border:1px solid color-mix(in oklab, var(--ink) 20%, transparent);min-width:0;color:var(--ink);background:var(--paper);box-shadow:0 14px 36px color-mix(in oklab, var(--ink) 16%, transparent);margin:0;transition:box-shadow .28s;display:block;overflow:hidden}.skill-gallery__drag{cursor:grab;touch-action:none;user-select:none}.skill-gallery>li.is-dragging .skill-gallery__drag{cursor:grabbing}.skill-gallery__item img{aspect-ratio:5/2;object-fit:cover;pointer-events:none;-webkit-user-drag:none;user-select:none;background:var(--media-placeholder);width:100%;transition:filter .32s ease, transform .42s var(--ease-out);display:block}.skill-gallery__item figcaption{border-top:1px solid color-mix(in oklab, var(--ink) 12%, transparent);min-height:46px;font-size:.76rem;line-height:1.25}.skill-gallery__open{min-height:inherit;color:inherit;justify-content:space-between;align-items:center;gap:14px;padding:9px 13px;display:flex}.skill-gallery__item .icon{opacity:.5;transition:opacity .18s ease, transform .26s var(--ease-out);flex:none;transform:translate(-2px,2px)}.skill-gallery>li[data-skill-active=true]:hover .skill-gallery__item,.skill-gallery>li[data-skill-active=true]:focus-within .skill-gallery__item{box-shadow:0 22px 54px color-mix(in oklab, var(--ink) 22%, transparent)}.skill-gallery>li[data-skill-active=true]:hover img,.skill-gallery>li[data-skill-active=true]:focus-within img{filter:saturate(1.06)contrast(1.02);transform:scale(1.008)}.skill-gallery__drag:focus-visible,.skill-gallery__open:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.skill-gallery>li[data-skill-active=true]:hover .icon,.skill-gallery>li[data-skill-active=true]:focus-within .icon{opacity:1;transform:translate(0)}.project-group{border-bottom:1px solid var(--hairline);padding:clamp(42px,6vw,78px) 0;scroll-margin-top:28px}.project-group:first-child{padding-top:0}.project-video-group+.project-video-group{border-top:1px solid var(--hairline);margin-top:36px;padding-top:28px}.project-video-group>h3{margin:0 0 20px;font-size:1.1rem;font-weight:550}.project-group--intro .project-group__heading{margin-bottom:0}.project-group__heading{grid-template-columns:minmax(160px,.62fr) minmax(280px,.78fr);align-items:start;gap:clamp(18px,2.4vw,34px);margin-bottom:clamp(28px,4vw,52px);display:grid}.project-group h2{letter-spacing:-.055em;margin:0;font-size:clamp(1.65rem,3vw,2.55rem);font-weight:600;line-height:1}.project-group__heading>p{max-width:48ch;color:var(--muted);font-family:var(--serif);margin:0;font-size:.96rem;line-height:1.7}.project-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(22px,3vw,46px);display:grid}.catalog-section>.project-card-grid{grid-column:1/-1}.project-card{min-width:0;color:var(--ink);display:grid}.project-card--linked{transition:color .18s}.project-card__cover{aspect-ratio:1.5;background:var(--media-placeholder);border:1px solid color-mix(in oklab, var(--ink) 10%, transparent);min-height:0;margin:0;position:relative;overflow:hidden}.project-card__image{object-fit:cover;width:100%;height:100%;transition:opacity .22s ease, transform .42s var(--ease-out);position:absolute;inset:0}.project-card__cover[data-cover-focus=top] .project-card__image{object-position:center top}.project-card__cover[data-cover-focus=bottom] .project-card__image{object-position:center bottom}.project-card--linked:hover .project-card__image{transform:scale(1.018)}.project-card__body{grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:16px 0 0;display:grid}.project-card__meta{color:var(--muted);letter-spacing:.09em;text-transform:uppercase;flex-wrap:wrap;grid-column:1/-1;gap:6px 15px;font-size:.68rem;font-weight:600;line-height:1.4;display:flex}.project-card__meta>span+span:before{color:var(--hairline);content:"/";margin-right:15px}.project-card__copy{min-width:0}.project-card h3{letter-spacing:-.045em;margin:0;font-size:clamp(1.25rem,2.15vw,1.85rem);font-weight:600;line-height:1.08}.project-card__copy p{max-width:47ch;color:var(--muted);font-family:var(--serif);margin:8px 0 0;font-size:.94rem;line-height:1.65}.project-card__visit{color:var(--muted);letter-spacing:.05em;white-space:nowrap;align-self:end;align-items:center;gap:9px;font-size:.72rem;transition:color .18s;display:inline-flex}.project-card--linked:hover .project-card__visit{color:var(--accent)}.project-card__visit .icon{transition:transform .22s var(--ease-out)}.project-card--linked:hover .project-card__visit .icon{transform:translate(3px,-3px)}.project-showcase{min-width:0}.project-showcase__toolbar{justify-content:flex-end;align-items:center;gap:14px;margin-bottom:14px;display:flex}.project-showcase__count{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.09em;gap:6px;margin:0 auto 0 0;font-size:.66rem;display:flex}.project-showcase__controls{gap:7px;display:flex}.project-showcase__controls button{border:1px solid color-mix(in oklab, var(--ink) 16%, transparent);width:42px;height:42px;color:var(--ink);background:var(--paper);cursor:pointer;transition:color .18s ease, background-color .18s ease, border-color .18s ease, opacity .18s ease, transform .18s var(--ease-out);border-radius:50%;place-items:center;padding:0;display:grid}.project-showcase__controls button:hover:not(:disabled){border-color:var(--ink);background:color-mix(in oklab, var(--paper) 91%, var(--ink));transform:translateY(-1px)}.project-showcase__controls button:active:not(:disabled){transform:scale(.94)}.project-showcase__controls button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-showcase__controls button:disabled{cursor:default;opacity:.3}.project-showcase__viewport{overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;min-width:0;overflow-x:auto}.project-showcase__viewport::-webkit-scrollbar{display:none}.project-showcase__viewport:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.project-showcase__track{gap:clamp(14px,2vw,22px);width:max-content;display:flex}.project-showcase__card{scroll-snap-align:start;align-content:start;width:max-content;min-width:0;display:grid}.project-showcase__media{height:clamp(218px,28.5vw,315px);margin:0;position:relative;overflow:hidden}.project-showcase__media img{object-fit:contain;width:auto;height:100%;display:block}.project-showcase__ordinal{width:32px;height:32px;color:var(--ink);background:color-mix(in oklab, var(--paper) 88%, transparent);box-shadow:0 5px 18px color-mix(in oklab, var(--ink) 10%, transparent);font-variant-numeric:tabular-nums;letter-spacing:.06em;backdrop-filter:blur(12px);border-radius:50%;place-items:center;font-size:.62rem;display:grid;position:absolute;top:12px;left:12px}.project-showcase__copy{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:4px 14px;padding-top:14px;display:grid}.project-showcase__copy p{color:var(--muted);letter-spacing:.09em;text-transform:uppercase;grid-column:1;margin:0;font-size:.63rem;font-weight:650}.project-showcase__copy h3{font-family:var(--serif);letter-spacing:-.025em;grid-column:1;margin:0;font-size:1.06rem;font-weight:520;line-height:1.25}.project-showcase__copy>.icon{color:var(--muted);transition:color .18s ease, transform .22s var(--ease-out);grid-area:1/2/3}.project-showcase__card:hover{color:var(--ink)}.project-showcase__card:hover .project-showcase__copy>.icon{color:var(--accent);transform:translate(2px,-2px)}.project-showcase__card:focus-visible{outline:none}.project-showcase__card:focus-visible .project-showcase__media{outline:2px solid var(--accent);outline-offset:-2px}.project-detail__back{color:var(--muted);text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:.28em;margin-top:clamp(48px,7vw,92px);font-size:.78rem;display:inline-block}.project-detail>.page-hero{padding-top:clamp(36px,5vw,72px)}.project-detail__meta{color:var(--muted);letter-spacing:.09em;text-transform:uppercase;flex-wrap:wrap;gap:6px 15px;padding-top:clamp(26px,4vw,42px);font-size:.68rem;font-weight:600;line-height:1.4;display:flex}.project-detail__meta>span+span:before{color:var(--hairline);content:"/";margin-right:15px}.project-detail__cover{margin:clamp(22px,3vw,38px) 0 0;position:relative;overflow:hidden}.project-detail__carousel:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.project-detail__carousel-track{position:relative}.project-detail__slide{visibility:hidden;opacity:0;transition:visibility 0s linear .36s, opacity .36s var(--ease-out);place-items:center;display:grid;position:absolute;inset:0}.project-detail__slide.is-active{visibility:visible;opacity:1;transition-delay:0s;position:relative;inset:auto}.project-detail__slide img{width:auto;max-width:100%;height:auto;max-height:min(82vh,980px);margin:0 auto;display:block}.project-detail__carousel-button{z-index:2;border:1px solid color-mix(in oklab, var(--ink) 18%, transparent);width:44px;height:44px;color:var(--ink);background:color-mix(in oklab, var(--paper) 74%, transparent);box-shadow:0 8px 28px color-mix(in oklab, var(--ink) 10%, transparent);cursor:pointer;opacity:.76;transition:color .18s ease, opacity .18s ease, transform .18s var(--ease-out);backdrop-filter:blur(16px);border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.project-detail__carousel-button--previous{left:clamp(12px,2vw,24px)}.project-detail__carousel-button--next{right:clamp(12px,2vw,24px)}.project-detail__carousel:hover .project-detail__carousel-button,.project-detail__carousel-button:focus-visible{opacity:1}.project-detail__carousel-button:hover{color:var(--accent)}.project-detail__carousel-button:active{transform:translateY(-50%)scale(.94)}.project-detail__carousel-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-detail__carousel-count{z-index:2;border:1px solid color-mix(in oklab, var(--ink) 14%, transparent);color:var(--ink);background:color-mix(in oklab, var(--paper) 74%, transparent);font-variant-numeric:tabular-nums;letter-spacing:.08em;backdrop-filter:blur(16px);border-radius:999px;gap:6px;margin:0;padding:7px 10px 6px;font-size:.66rem;line-height:1;display:flex;position:absolute;bottom:clamp(12px,2vw,24px);right:clamp(12px,2vw,24px)}.project-detail__utility{justify-content:space-between;align-items:flex-end;gap:24px;padding-top:clamp(26px,4vw,42px);display:flex}.project-detail__utility .project-detail__meta{padding-top:0}.project-detail__role{align-items:center;gap:6px;display:inline-flex}.project-detail__keywords{color:var(--muted);letter-spacing:.035em;flex-wrap:wrap;justify-content:flex-end;gap:6px 12px;margin:0;padding:0;font-size:.7rem;line-height:1.4;list-style:none;display:flex}.project-detail__keywords li+li:before{color:var(--hairline);content:"/";margin-right:12px}.project-detail__narrative{margin-top:clamp(62px,8vw,104px)}.project-detail__section{border-top:1px solid var(--hairline);padding:clamp(38px,5.5vw,68px) 0}.project-detail__section-heading{color:var(--muted);align-items:center;gap:9px;margin-bottom:22px;display:flex}.project-detail__section-heading>.icon{width:17px;height:17px;color:var(--accent)}.project-detail__section-heading h2{letter-spacing:.09em;text-transform:uppercase;margin:0;font-size:.82rem;font-weight:650;line-height:1.25}.project-detail__context{border-top-color:var(--ink);grid-template-columns:minmax(150px,.42fr) minmax(0,1fr);gap:clamp(30px,7vw,84px);padding-top:16px;display:grid}.project-detail__context .project-detail__section-heading{margin:0}.project-detail__context blockquote{color:var(--muted);font-family:var(--serif);margin:0;font-size:clamp(1.1rem,1.9vw,1.38rem);font-style:italic;line-height:1.68}.project-detail__context blockquote:before{content:"“"}.project-detail__context blockquote:after{content:"”"}.project-detail__cta{border-top:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:30px;padding:clamp(30px,4.5vw,48px) 0;display:flex}.project-detail__cta h2{font-family:var(--serif);letter-spacing:-.04em;margin:0;font-size:clamp(1.25rem,2.2vw,1.65rem);font-weight:500}.project-detail__cta p{color:var(--muted);margin:6px 0 0;font-size:.8rem}.project-detail__cta a{border:1px solid var(--ink);min-height:48px;color:var(--paper);background:var(--ink);box-shadow:0 8px 22px color-mix(in oklab, var(--ink) 14%, transparent);letter-spacing:.025em;white-space:nowrap;transition:color .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s var(--ease-out);border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:0 22px;font-size:.76rem;font-weight:650;display:inline-flex}.project-detail__cta a:hover{border-color:var(--accent);color:var(--paper);background:var(--accent);box-shadow:0 11px 26px color-mix(in oklab, var(--accent) 22%, transparent);transform:translateY(-2px)}.project-detail__cta a:active{transform:translateY(0)scale(.97)}.project-detail__cta a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.project-detail__cta a .icon{transition:transform .18s var(--ease-out)}.project-detail__cta a:hover .icon{transform:translate(2px,-2px)}.project-detail__case-grid,.project-detail__build-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(38px,7vw,78px);display:grid}.project-detail__status-card{border:1px solid var(--project-status-border);min-width:0;color:var(--muted);background:var(--project-status-bg);box-shadow:0 12px 30px color-mix(in oklab, var(--ink) 5%, transparent);border-radius:16px;padding:clamp(22px,3vw,28px)}.project-detail__status-card--risk{--project-status-border:color-mix(in oklab, var(--paper) 68%, oklch(58% .12 28));--project-status-bg:color-mix(in oklab, var(--paper) 93%, oklch(72% .09 28));--project-status-accent:oklch(52% .14 28)}.project-detail__status-card--success{--project-status-border:color-mix(in oklab, var(--paper) 68%, oklch(55% .1 170));--project-status-bg:color-mix(in oklab, var(--paper) 93%, oklch(72% .08 170));--project-status-accent:oklch(46% .1 170)}.project-detail__status-card .project-detail__section-heading,.project-detail__status-card .project-detail__section-heading>.icon{color:var(--project-status-accent)}.project-detail__problem-line,.project-detail__solution-copy{color:var(--ink);font-family:var(--serif);margin:0;font-size:clamp(1.02rem,1.6vw,1.18rem);font-weight:400;line-height:1.65}.project-detail__status-card ul{gap:14px;margin:20px 0 0;padding:0;list-style:none;display:grid}.project-detail__status-card li{font-family:var(--serif);padding-left:16px;font-size:.92rem;line-height:1.65;position:relative}.project-detail__status-card li:before{background:var(--accent);content:"";border-radius:50%;width:4px;height:4px;position:absolute;top:.74em;left:0}.project-detail__goal{border-top:1px solid var(--hairline);margin-top:26px;padding-top:18px}.project-detail__eyebrow{color:var(--accent);letter-spacing:.11em;text-transform:uppercase;margin:0;font-size:.66rem;font-weight:650;line-height:1.4}.project-detail__goal>p:last-child{font-family:var(--serif);margin:8px 0 0;font-size:.92rem;line-height:1.65}.project-detail__build-grid>article{min-width:0}.project-detail__decision-list{gap:11px;margin:0;padding:0;list-style:none;display:grid}.project-detail__decision-list li{border:1px solid var(--hairline);color:var(--muted);background:var(--paper);font-family:var(--serif);box-shadow:0 7px 20px color-mix(in oklab, var(--ink) 4%, transparent);border-radius:11px;padding:14px 15px;font-size:.92rem;line-height:1.65}.project-detail__workflow{border:1px solid var(--hairline);background:var(--code-paper);box-shadow:0 8px 22px color-mix(in oklab, var(--ink) 4%, transparent);border-radius:13px;grid-template-columns:20px minmax(0,1fr);gap:13px;padding:20px;display:grid}.project-detail__workflow>.icon{width:17px;height:17px;color:var(--accent);margin-top:3px}.project-detail__workflow p{color:var(--muted);font-family:var(--serif);margin:0;font-size:.92rem;line-height:1.72}.project-detail__experiments{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(30px,4vw,46px) clamp(18px,3vw,28px);display:grid}.project-detail__experiment{border:1px solid var(--hairline);background:var(--paper);min-width:0;box-shadow:0 9px 24px color-mix(in oklab, var(--ink) 4%, transparent);border-radius:13px;overflow:hidden}.project-detail__experiment-media{aspect-ratio:1.6;border-bottom:1px solid var(--hairline);background:var(--media-placeholder);place-items:center;display:grid;overflow:hidden}.project-detail__experiment-media img{object-fit:contain;width:100%;height:100%;display:block}.project-detail__experiment-copy{padding:16px}.project-detail__experiment-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.project-detail__experiment-heading>.icon{color:var(--muted);flex:none}.project-detail__experiment-tag{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.61rem;font-weight:680}.project-detail__experiment-copy h3{font-family:var(--serif);letter-spacing:-.035em;margin:7px 0 0;font-size:clamp(1.1rem,1.8vw,1.38rem);font-weight:500;line-height:1.2}.project-detail__experiment-copy>p:not(.project-detail__experiment-tag){color:var(--muted);font-family:var(--serif);margin:12px 0 0;font-size:.86rem;line-height:1.6}.project-detail__experiment-copy a{color:var(--muted);letter-spacing:.045em;align-items:center;gap:8px;margin-top:18px;font-size:.72rem;display:inline-flex}.project-detail__experiment-copy a .icon{transition:transform .22s var(--ease-out)}.project-detail__experiment-copy a:hover .icon{transform:translate(2px,-2px)}.partners-directory{width:min(100%,920px);margin:0 auto;padding-top:clamp(34px,5vw,64px)}.partner-entry{border-top:1px solid var(--hairline);min-height:94px;color:var(--ink);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:clamp(16px,2vw,26px);padding:22px 8px;transition:color .18s,background-color .18s;display:grid}.partner-entry:last-child{border-bottom:1px solid var(--ink)}.partner-entry:hover{color:var(--accent);background:color-mix(in oklab, var(--ink) 3.5%, transparent)}.partner-entry__index{color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:.12em;align-self:center;font-size:.62rem;font-weight:650}.partner-entry__identity{min-width:0}.partner-entry__identity strong{letter-spacing:-.035em;font-size:clamp(1.35rem,2vw,2rem);font-weight:610;line-height:1}.partner-entry__visit{width:30px;height:30px;color:var(--muted);align-self:center;place-items:center;transition:color .18s;display:inline-grid}.partner-entry__visit .icon{transition:transform .22s var(--ease-out)}.partner-entry:hover .partner-entry__visit{color:var(--accent)}.partner-entry:hover .partner-entry__visit .icon{transform:translate(2px,-2px)}.catalog-footer,.site-footer{border-top:1px solid var(--hairline);width:min(100% - 48px,1180px);color:var(--muted);justify-content:space-between;margin:0 auto;padding:28px 0 46px;font-size:.72rem;display:flex}.site-footer--home{width:min(100% - 48px,660px)}.visual-archive__intro{grid-template-columns:minmax(0,1.16fr) minmax(230px,.48fr);align-items:end;gap:18px 9vw;padding-bottom:clamp(38px,5vw,78px);display:grid}.visual-archive__kicker{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;grid-column:1/-1;margin:0;font-size:.78rem;font-weight:650}.visual-archive h1{max-width:16ch;font-family:var(--serif);letter-spacing:-.075em;margin:0;font-size:clamp(3.5rem,5.3vw,5.5rem);font-weight:400;line-height:.97}.visual-archive__description{max-width:31ch;color:var(--muted);font-family:var(--serif);margin:0 0 .35rem;font-size:clamp(1rem,1.3vw,1.2rem);line-height:1.66}.photo-accordion{margin:0 0 clamp(34px,5vw,66px)}.photo-accordion__header{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:end;gap:24px;padding:0 0 13px;display:flex}.photo-accordion__eyebrow{color:var(--accent);letter-spacing:.13em;text-transform:uppercase;margin:0 0 5px;font-size:.66rem;font-weight:650}.photo-accordion h2{max-width:30ch;font-family:var(--serif);letter-spacing:-.04em;margin:0;font-size:clamp(1.2rem,1.65vw,1.55rem);font-weight:400;line-height:1.15}.photo-accordion__count{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.08em;white-space:nowrap;margin:0;font-size:.7rem}.photo-accordion__stage{margin-top:clamp(14px,1.7vw,22px);container-type:inline-size}.photo-accordion__panels{--panel-gap:clamp(8px, .85vw, 14px);--collapsed-width:40px;--preferred-height:clamp(350px, 42vw, 580px);gap:var(--panel-gap);height:min(var(--preferred-height), calc((100cqw - (var(--panel-count) - 1) * (var(--collapsed-width) + var(--panel-gap))) / var(--active-ratio)));contain:paint;display:flex;overflow:hidden}.photo-accordion__panel{color:oklch(98% .005 90);background:var(--media-placeholder);cursor:pointer;border:0;border-radius:clamp(16px,1.7vw,24px);flex:1 1 0;min-width:0;padding:0;position:relative;overflow:hidden}.photo-accordion__panel.is-active{width:auto;height:100%;aspect-ratio:var(--photo-ratio);flex:none}.photo-accordion__panel img{object-fit:cover;opacity:1;width:100%;height:100%;display:block}.photo-accordion__panel.is-active img{object-fit:contain}.photo-accordion__label{color:oklch(98% .005 90);letter-spacing:-.035em;opacity:0;transition:opacity .26s ease .14s, transform .46s var(--ease-out) .14s;white-space:nowrap;align-items:center;gap:13px;font-size:clamp(1rem,1.7vw,1.6rem);font-weight:650;line-height:1;display:flex;position:absolute;bottom:clamp(18px,2vw,30px);left:clamp(18px,2vw,32px);transform:translateY(10px)}.photo-accordion__panel.is-active .photo-accordion__label{opacity:1;transform:none}.photo-accordion__label-mark{background:currentColor;border-radius:99px;width:4px;height:1.35em}.photo-accordion__panel:focus-visible{z-index:1;outline-offset:-5px;outline:2px solid oklch(88% .11 80)}.visual-archive__utility{border-top:1px solid var(--ink);border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:24px;padding:14px 0;display:flex}.visual-archive__filters{flex-wrap:wrap;align-items:center;gap:6px 18px;display:flex}.visual-archive__filters button{min-width:44px;min-height:44px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:5px 8px;font-size:.84rem;line-height:1.25}.visual-archive__filters button.is-active{color:var(--ink)}.visual-archive__filters>span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.76rem}.visual-archive__filters button{border-bottom:1px solid #0000;min-width:44px}.visual-archive__filters button:hover,.visual-archive__filters button.is-active{border-bottom-color:var(--accent)}.visual-archive__filters button:focus-visible,.visual-archive__note a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.visual-archive__grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(18px,2.4vw,38px);padding-top:clamp(26px,4vw,62px);display:grid}.archive-record{min-width:0;margin:0}.archive-record--hero{grid-column:span 8}.archive-record--portrait{grid-column:span 4;margin-top:clamp(42px,9vw,158px)}.archive-record--landscape{grid-column:3/span 7}.archive-record--square{grid-column:span 4;margin-top:clamp(8px,3vw,42px)}.archive-record--wide{grid-column:span 8;margin-top:clamp(8px,3vw,42px)}.archive-record[hidden]{display:none}.archive-record img{object-fit:cover;background:var(--media-placeholder);width:100%;height:auto;min-height:250px;transition:opacity .28s var(--ease-out), filter .26s ease, transform .6s var(--ease-out);display:block}.archive-record--hero img{aspect-ratio:1.5}.archive-record--portrait img{aspect-ratio:.72}.archive-record--landscape img,.archive-record--wide img{aspect-ratio:1.58}.archive-record--square img{aspect-ratio:1}.visual-archive:not(.visual-archive--photos) .archive-record img{object-fit:contain}.archive-record:hover img{filter:saturate(1.05);transform:scale(1.008)}.archive-record figcaption{color:var(--muted);grid-template-columns:34px minmax(0,1fr);gap:2px 8px;padding-top:11px;font-size:.78rem;line-height:1.4;display:grid}.archive-record figcaption span{color:var(--accent);font-variant-numeric:tabular-nums;grid-row:1/span 2}.archive-record figcaption strong{color:var(--ink);font-weight:550}.archive-record figcaption em{font-style:normal}.visual-archive--photos .visual-archive__grid{display:block}.archive-masonry{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:clamp(18px,2.4vw,38px);display:grid}.archive-masonry__column{align-content:start;gap:clamp(32px,4vw,62px);min-width:0;display:grid}.visual-archive--photos .archive-record,.visual-archive--photos .archive-record--portrait,.visual-archive--photos .archive-record--landscape,.visual-archive--photos .archive-record--square,.visual-archive--photos .archive-record--wide{grid-column:auto;margin:0}.visual-archive--photos .archive-record img{aspect-ratio:auto;object-fit:contain;height:100%;min-height:0}.visual-archive--photos .archive-record{border-radius:clamp(16px,1.45vw,22px);overflow:clip}.visual-archive--photos .archive-record img{border-radius:inherit;transform-origin:50%}.archive-record__open{border-radius:inherit;background:var(--media-placeholder);cursor:zoom-in;border:0;width:100%;padding:0;display:block}.visual-archive--photos .archive-record__open{aspect-ratio:var(--archive-photo-aspect-ratio,1);overflow:hidden}.archive-record__open:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.visual-archive--photos .archive-record[data-media-ready=false] img{opacity:0}.visual-archive--photos .archive-record.is-archive-entering{animation:archive-record-enter .36s var(--ease-out) both}.photo-lightbox{--lightbox-pad:clamp(22px, 4.5vw, 72px);width:100vw;max-width:none;height:100dvh;max-height:none;padding:var(--lightbox-pad);color:var(--ink);background:0 0;border:0;margin:0;overflow:hidden}.photo-lightbox::backdrop{opacity:1;background:color-mix(in oklab, var(--paper) 42%, transparent);backdrop-filter:blur(22px)saturate(.78)}.photo-lightbox.is-closing::backdrop{animation:photo-lightbox-backdrop-out .48s var(--ease-out) both}.photo-lightbox__frame{background:0 0;grid-template-columns:minmax(0,1fr) minmax(240px,.34fr);gap:clamp(28px,5vw,76px);width:100%;height:100%;display:grid;position:relative;overflow:visible}.photo-lightbox__close{z-index:2;width:var(--control-size);height:var(--control-size);border:1px solid color-mix(in oklab, var(--ink) 22%, transparent);color:var(--ink);background:color-mix(in oklab, var(--paper) 56%, transparent);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:0;right:0}.photo-lightbox__close:hover{color:var(--accent)}.photo-lightbox>.site-cursor{z-index:1000}.photo-lightbox__media{background:0 0;place-items:center;min-width:0;min-height:0;display:grid}.photo-lightbox__media img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100%;filter:drop-shadow(0 20px 48px color-mix(in oklab, var(--ink) 18%, transparent));border-radius:clamp(14px,1.4vw,24px);display:block}.photo-lightbox__details{align-self:end;padding:0 0 clamp(16px,3vw,48px)}.photo-lightbox__index{color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:.11em;margin:0 0 18px;font-size:.72rem}.photo-lightbox__details h2{font-family:var(--serif);letter-spacing:-.055em;margin:0;font-size:clamp(1.7rem,2.5vw,2.5rem);font-weight:400;line-height:1.04}.photo-lightbox__caption{color:var(--muted);font-family:var(--serif);margin:22px 0 0;font-size:.98rem;line-height:1.7}.photo-lightbox__meta{border-top:1px solid var(--hairline);gap:12px;margin:34px 0 0;padding-top:16px;display:grid}.photo-lightbox__meta div{grid-template-columns:48px minmax(0,1fr);gap:12px;font-size:.78rem;line-height:1.45;display:grid}.photo-lightbox__meta dt{color:var(--muted)}.photo-lightbox__meta dd{margin:0}.photo-lightbox[data-orientation=landscape] .photo-lightbox__frame{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr;gap:clamp(18px,3vw,36px)}.photo-lightbox[data-orientation=landscape] .photo-lightbox__media{grid-area:1/1;align-items:end}.photo-lightbox[data-orientation=landscape] .photo-lightbox__media img{max-height:min(65dvh,100dvh - 320px)}.photo-lightbox[data-orientation=landscape] .photo-lightbox__details{grid-area:2/1;justify-self:start;max-width:min(560px,72vw);padding:0 0 clamp(4px,1vw,18px)}.photo-lightbox[data-orientation=portrait] .photo-lightbox__media{grid-area:1/1}.photo-lightbox[data-orientation=portrait] .photo-lightbox__details{grid-area:1/2}.photo-lightbox[data-orientation=portrait] .photo-lightbox__media img{max-height:calc(100dvh - var(--lightbox-pad) - var(--lightbox-pad))}.photo-lightbox[open] .photo-lightbox__details{animation:photo-lightbox-details-in .42s var(--ease-out) 60ms both}.visual-archive__note{border-top:1px solid var(--ink);color:var(--muted);font-family:var(--serif);justify-content:space-between;gap:20px;margin-top:clamp(64px,10vw,150px);padding-top:14px;font-size:.95rem;display:flex}.visual-archive__note p{margin:0}.visual-archive__note a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:.25em}.visual-archive__sentinel{min-height:1px}main{width:min(100% - 48px,760px);margin:0 auto}.intro{flex-direction:column;justify-content:center;width:min(100%,760px);min-height:calc(100vh - 92px);margin-inline:auto;padding:110px 0 140px;display:flex}h1,p{margin:0}h1{font-family:var(--serif);font-size:var(--text-home-title);letter-spacing:-.075em;margin-bottom:26px;font-weight:400;line-height:.9}.lead{max-width:none;font-family:var(--serif);letter-spacing:-.025em;white-space:nowrap;text-wrap:pretty;font-size:clamp(1.15rem,1.45vw,1.3rem);line-height:1.7}.home-lead__identity{white-space:nowrap}@media (width>=821px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.home-lead__side{transition:transform .32s cubic-bezier(.22,1,.36,1);display:inline-block}.home-lead__identity:has(.home-avatar:hover) .home-lead__side--before{transform:translate(-44px)}.home-lead__identity:has(.home-avatar:hover) .home-lead__side--after{transform:translate(44px)}}.home-lead__role,.home-copy__highlight{z-index:1;isolation:isolate;border:1px solid color-mix(in oklab, var(--ink) 12%, transparent);background:color-mix(in oklab, var(--ink) 7%, transparent);cursor:pointer;--enter-x:50%;--enter-y:50%;border-radius:999px;align-items:center;margin-inline:.06em;padding:.02em .24em .04em;line-height:1.25;transition:color .26s cubic-bezier(.22,1,.36,1),border-color .26s cubic-bezier(.22,1,.36,1);display:inline-flex;position:relative;overflow:hidden}.home-lead__role:before,.home-copy__highlight:before{z-index:-1;border-radius:inherit;background:linear-gradient(135deg, color-mix(in oklab, var(--ink) 68%, var(--paper)), var(--ink));clip-path:circle(0% at var(--enter-x) var(--enter-y));content:"";pointer-events:none;transition:clip-path .32s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.home-highlight-pill__track{z-index:1;line-height:inherit;transition:transform .32s cubic-bezier(.22,1,.36,1);display:block;position:relative}.home-highlight-pill__text{white-space:nowrap;display:block}.home-highlight-pill__text--clone{position:absolute;top:100%;left:0}.home-avatar{aspect-ratio:4/3;vertical-align:-.5em;perspective:600px;z-index:1;width:clamp(3.75rem,5vw,4.5rem);margin:0 .5em 0 .28em;line-height:0;display:inline-block;position:relative}.home-avatar__frame{background:var(--media-placeholder);width:100%;height:100%;box-shadow:0 2px 8px color-mix(in oklab, var(--ink) 8%, transparent);transform-origin:bottom;transform-style:preserve-3d;border:0;border-radius:.5rem;transition:transform .28s cubic-bezier(.175,.885,.32,1.275),box-shadow .28s;display:block;overflow:hidden;transform:rotateX(0)rotateY(0)scale(1)}.home-avatar__image{object-fit:cover;object-position:50% 34%;pointer-events:none;width:100%;height:100%;display:block;transform:scale(1.015)}:root[data-theme=dark] .home-avatar__image{object-position:48% 42%}@media (hover:hover) and (pointer:fine){.home-lead__role:hover,.home-copy__highlight:hover{z-index:2;color:var(--paper);border-color:var(--ink)}.home-lead__role:hover:before,.home-copy__highlight:hover:before{clip-path:circle(150% at var(--enter-x) var(--enter-y))}.home-lead__role:hover .home-highlight-pill__track,.home-copy__highlight:hover .home-highlight-pill__track{transform:translateY(-100%)}.home-avatar:hover{z-index:50}.home-avatar:hover .home-avatar__frame{box-shadow:0 8px 18px color-mix(in oklab, var(--ink) 12%, transparent), 0 2px 6px color-mix(in oklab, var(--ink) 8%, transparent);transform:translateY(-.18em)rotateX(-3deg)rotateY(5deg)scale(2.3)}}.home-copy{width:100%;color:var(--muted);font-family:var(--serif);text-wrap:pretty;gap:12px;margin-top:22px;font-size:clamp(1.02rem,1.35vw,1.14rem);line-height:1.9;display:grid}.home-copy hr{border:0;border-top:1px solid var(--hairline);width:42px;margin:16px 0}.home-contact{gap:4px;display:grid}.home-copy__label{color:var(--ink)}.text-link{color:var(--ink);text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:.22em}.text-link:hover{text-decoration-color:currentColor}.hero-image{object-fit:cover;border:1px solid var(--hairline);filter:saturate(.78)contrast(.98);width:min(100%,610px);max-height:520px;margin-top:38px;display:block}@keyframes logo-draw{to{stroke-dashoffset:0}}@keyframes logo-mask{to{opacity:1}}@keyframes logo-zoom{to{transform:scale(120)}}@keyframes archive-record-enter{0%{opacity:.01;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes photo-lightbox-backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes photo-lightbox-details-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@view-transition{navigation:auto}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--theme-x) var(--theme-y))}to{clip-path:circle(var(--theme-radius) at var(--theme-x) var(--theme-y))}}@keyframes route-reveal{0%{clip-path:circle(0 at var(--route-x) var(--route-y))}to{clip-path:circle(var(--route-radius) at var(--route-x) var(--route-y))}}:root[data-view-transition=theme]::view-transition-old(root),:root[data-view-transition=route]::view-transition-old(root){mix-blend-mode:normal;animation:none}:root[data-view-transition=theme]::view-transition-new(root){animation:theme-reveal .5s var(--ease-in-out) both;mix-blend-mode:normal}:root[data-view-transition=route]::view-transition-new(root){animation:route-reveal var(--motion-page-reveal) var(--ease-in-out) both;mix-blend-mode:normal}@media (width<=760px){:root{--control-size:44px}.site-header{top:max(10px, env(safe-area-inset-top));width:min(100% - 20px,760px);max-width:none;min-height:56px;padding:6px}main{width:min(100% - 32px,760px)}.mobile-nav-toggle{width:var(--control-size);height:var(--control-size);color:var(--muted);background:color-mix(in oklab, var(--ink) 6%, transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--ink) 6%, transparent);cursor:pointer;transition:color .18s ease, background-color .18s ease, transform .18s var(--ease-out);border:0;border-radius:50%;place-items:center;margin-left:auto;padding:0;display:grid}.mobile-nav-toggle:hover{color:var(--ink);background:color-mix(in oklab, var(--ink) 10%, transparent)}.mobile-nav-toggle:active{transform:scale(.94)}.mobile-nav-toggle svg{grid-area:1/1}.mobile-nav-toggle__close,.site-header.is-nav-open .mobile-nav-toggle__menu{display:none}.site-header.is-nav-open .mobile-nav-toggle__close{display:block}.site-header>.site-nav{z-index:5;max-height:calc(100dvh - 88px - env(safe-area-inset-top));background:color-mix(in oklab, var(--paper) 88%, transparent);box-shadow:0 22px 52px color-mix(in oklab, var(--ink) 16%, transparent), inset 0 1px 0 oklab(100% 0 5.96046e-8/.7);backdrop-filter:blur(26px)saturate(1.12);overscroll-behavior:contain;border:1px solid oklab(100% 0 5.96046e-8/.55);border-radius:24px;align-items:stretch;gap:0;padding:9px;font-size:.88rem;display:none;position:absolute;top:calc(100% + 10px);left:0;right:0;overflow-y:auto}:root[data-theme=dark] .site-nav{border-color:color-mix(in oklab, var(--ink) 13%, transparent);background:color-mix(in oklab, var(--paper) 91%, transparent)}.site-header.is-nav-open .site-nav{display:grid}.nav-menu{margin:0;padding:0}.nav-menu__trigger{grid-template-columns:minmax(0,1fr) 48px;min-height:52px;margin:0;padding:0;display:grid}.nav-link{height:52px;padding:0 13px}.nav-disclosure{width:48px;height:52px;display:grid}.nav-popover{background:color-mix(in oklab, var(--ink) 4%, transparent);width:auto;box-shadow:none;opacity:1;pointer-events:auto;backdrop-filter:none;border:0;border-radius:16px;margin:0 0 7px;padding:5px;display:none;position:static;transform:none}.nav-menu.is-open .nav-popover{display:grid}.nav-menu:after{display:none}.nav-utilities{border-top:1px solid var(--hairline);box-shadow:none;background:0 0;border-radius:0;justify-content:space-between;gap:0;margin:7px 0 0;padding:6px 0 0}.nav-utilities .nav-divider{display:none}.nav-utilities .icon-link,.nav-utilities .language-toggle,.nav-utilities .theme-toggle{display:grid}.nav-popover a{padding:9px 10px 10px}.intro{min-height:calc(100vh - 70px);padding:calc(max(10px, env(safe-area-inset-top)) + 56px + 32px) 0 12vh;justify-content:flex-start}.lead{white-space:normal}.site-footer{padding-bottom:max(28px, env(safe-area-inset-bottom))}}@media (width<=820px){.catalog-main,.catalog-footer,.site-footer{width:min(100% - 32px,760px)}.catalog-hero{grid-template-columns:1fr;gap:20px;padding-top:72px}.catalog-hero h1{grid-column:1}.catalog-hero__intro{grid-area:auto/1;max-width:36ch}.catalog-section{grid-template-columns:1fr;gap:24px}.catalog-section--media{gap:30px}.catalog-section--media .catalog-section__media,.catalog-section--media:nth-child(2n) .catalog-section__media,.catalog-section--media .catalog-section__content,.catalog-section--media:nth-child(2n) .catalog-section__content{grid-area:auto/1}.catalog-section--detailed .catalog-section__content{grid-template-columns:1fr}.catalog-section--detailed .catalog-section__content>p,.catalog-section--detailed .catalog-section__content>ul{grid-area:auto/1}.catalog-section--detailed .catalog-section__content>ul{margin-top:28px}.skill-feature__header{grid-template-columns:1fr;gap:28px}.skill-feature__summary>p{max-width:60ch}.skill-project{grid-template-columns:1fr;gap:26px}.skill-project__content{max-width:560px}.skill-project h2{max-width:none}.skill-gallery>li{width:min(88%,680px)}.skill-gallery{height:clamp(300px,47vw,370px)}.project-group__heading{grid-template-columns:1fr;gap:16px}.project-group__heading>p{grid-column:1}.project-card-grid{gap:32px 20px}.partner-entry{grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:84px;padding:20px 2px}.partner-entry__identity{grid-column:2}.partner-entry__identity strong{font-size:clamp(1.25rem,6vw,1.75rem)}.partner-entry__visit{grid-column:3}}@media (width<=960px){.archive-masonry{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-lightbox[data-orientation=portrait] .photo-lightbox__frame{grid-template-columns:minmax(0,1fr) minmax(210px,.34fr);gap:clamp(20px,4vw,42px)}}@media (width<=560px){.skill-feature__facts{grid-template-columns:1fr}.skill-feature__facts>div{padding:14px 0}.skill-feature__facts>div+div{border-top:1px solid var(--hairline);border-left:0;padding-left:0}.skill-project{gap:22px;padding-top:8px}.skill-project__content>p{margin-top:14px}.skill-project__repository{margin-top:20px}.skill-gallery__toolbar{top:auto;bottom:12px;right:4px;transform:none}.skill-gallery{height:230px}.skill-gallery>li{width:calc(100% - 28px)}.skill-gallery__item figcaption{min-height:44px}.project-card-grid{grid-template-columns:1fr}.project-card__body{gap:14px}.project-card__visit{grid-column:1;justify-self:start}.project-showcase__media{height:min(61.5vw,240px)}.project-showcase__controls button{width:40px;height:40px}.project-detail__utility{flex-direction:column;align-items:flex-start;gap:16px}.project-detail__keywords{justify-content:flex-start;font-size:.78rem}.project-detail__section-heading h2{font-size:.875rem}.project-detail__carousel-button{width:40px;height:40px}.project-detail__narrative{margin-top:70px}.project-detail__context,.project-detail__case-grid,.project-detail__build-grid,.project-detail__experiments{grid-template-columns:1fr}.project-detail__context,.project-detail__case-grid,.project-detail__build-grid{gap:34px}.project-detail__context .project-detail__section-heading{margin-bottom:0}.project-detail__cta{flex-direction:column;align-items:flex-start;gap:16px}.project-detail__workflow{grid-template-columns:20px minmax(0,1fr)}.photo-accordion{margin-bottom:42px}.photo-accordion__header{align-items:start}.photo-accordion__count{padding-top:2px}.photo-accordion__stage{margin-top:14px}.photo-accordion__panels{--panel-gap:7px;--collapsed-width:30px;--preferred-height:min(112vw, 440px)}.photo-accordion__panel{border-radius:14px;flex:0 0 30px}.photo-accordion__panel.is-active{flex:none}.photo-accordion__label{gap:9px;font-size:1rem;bottom:16px;left:16px}.photo-accordion__label-mark{width:3px}.visual-archive__utility{flex-direction:column;align-items:flex-start;gap:8px;padding:11px 0}.visual-archive__filters{gap:4px 15px}.visual-archive__filters button{min-height:44px;font-size:.9rem}.visual-archive__filters>span{width:100%;margin-top:2px}.visual-archive__grid{grid-template-columns:1fr;gap:34px;padding-top:26px}.archive-record,.archive-record--portrait,.archive-record--landscape,.archive-record--square,.archive-record--wide{grid-column:auto;margin-top:0}.archive-record img,.archive-record--hero img,.archive-record--portrait img,.archive-record--landscape img,.archive-record--wide img,.archive-record--square img{aspect-ratio:auto;min-height:0}.archive-masonry{grid-template-columns:1fr;gap:34px}.archive-masonry__column{gap:34px}.visual-archive--photos .archive-record img{aspect-ratio:auto}.visual-archive__note{flex-direction:column;align-items:flex-start;margin-top:76px;font-size:.94rem}.photo-lightbox{--lightbox-pad:18px;width:100vw;height:100dvh;max-height:none;padding:var(--lightbox-pad)}.photo-lightbox__frame,.photo-lightbox[data-orientation=portrait] .photo-lightbox__frame,.photo-lightbox[data-orientation=landscape] .photo-lightbox__frame{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr;gap:18px;overflow-y:auto}.photo-lightbox__media,.photo-lightbox[data-orientation=portrait] .photo-lightbox__media,.photo-lightbox[data-orientation=landscape] .photo-lightbox__media{grid-area:1/1;min-height:0}.photo-lightbox__media img{max-height:100%}.photo-lightbox__details,.photo-lightbox[data-orientation=portrait] .photo-lightbox__details,.photo-lightbox[data-orientation=landscape] .photo-lightbox__details{border:0;grid-area:2/1;max-width:100%;padding:0 0 12px}}@media (prefers-reduced-motion:reduce){body,.site-page,.intro-overlay,.monogram img{transition-duration:.18s}.ambient-flow{opacity:.55}.intro-mark__line{stroke-dashoffset:0;animation:none}.intro-mark__cutout{opacity:1;animation:none}.intro-mark__motion{animation:none}.skill-gallery>li,.skill-gallery__shuffle,.skill-gallery__shuffle .icon,.skill-gallery__item,.skill-gallery__item img,.skill-gallery__item .icon{transition-duration:.01ms;transition-delay:0s}:root[data-view-transition=theme]::view-transition-new(root),:root[data-view-transition=route]::view-transition-new(root),.photo-accordion__panel,.photo-accordion__panel img,.archive-record img,.home-avatar__frame,.home-avatar__image,.home-lead__role,.home-copy__highlight,.home-lead__role:before,.home-copy__highlight:before,.home-highlight-pill__track,.photo-lightbox[open] .photo-lightbox__details{animation:none}.photo-lightbox.is-closing::backdrop{opacity:0;animation:none}.visual-archive--photos .archive-record.is-archive-entering{animation:none}}.page-hero{isolation:isolate;border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,1fr) minmax(240px,.48fr);align-items:end;gap:20px 8vw;padding:clamp(74px,10vw,142px) 0 clamp(44px,6vw,76px);display:grid;position:relative;overflow:hidden}.page-hero>h1,.page-hero__description{z-index:1;position:relative}.page-hero h1{max-width:18ch;font-family:var(--sans);font-size:var(--text-page-title);letter-spacing:-.075em;grid-column:1;margin:0;font-weight:650;line-height:.9}.page-hero__description{max-width:31ch;color:var(--muted);font-family:var(--serif);grid-column:2;font-size:clamp(1rem,1.3vw,1.16rem);line-height:1.7}.page-hero[data-hero-motion=projects] .page-hero__description{text-align:left;justify-self:end;width:min(100%,70ch);max-width:none;margin:0}@media (width>=821px){.page-hero[data-hero-motion=projects]{grid-template-columns:auto minmax(0,1fr);column-gap:4vw}}.visual-archive{padding-top:0}.visual-archive>.page-hero{margin-bottom:clamp(34px,5vw,66px)}.visual-archive--photos>.page-hero{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:20px 4vw}.visual-archive--photos .page-hero__description{text-wrap:pretty;max-width:none}@media (width<=820px){.visual-archive--photos>.page-hero{grid-template-columns:1fr}}.architecture-index>.page-hero{grid-template-columns:minmax(0,1fr) auto;gap:20px 3vw}.architecture-quote{z-index:1;grid-column:2;align-self:center;width:max-content;max-width:100%;margin:0;position:relative}.architecture-quote blockquote{color:var(--muted);font-family:var(--serif);text-wrap:pretty;white-space:nowrap;margin:0;font-size:clamp(1.05rem,1.35vw,1.3rem);font-weight:400;line-height:1.65}.architecture-quote figcaption{color:var(--muted);letter-spacing:.04em;margin-top:14px;font-size:.75rem;line-height:1.5}@media (width<=820px){.architecture-index>.page-hero{grid-template-columns:minmax(0,1fr)}.architecture-quote{grid-column:1;width:100%;container-type:inline-size}.architecture-quote blockquote{font-size:min(1.05rem,4.8cqw)}:root[data-locale=en] .architecture-quote blockquote{font-size:min(1.05rem,2.15cqw)}}.architecture-project-list{--architecture-gap:clamp(12px, 1.2vw, 20px);column-count:3;column-gap:var(--architecture-gap);padding:clamp(34px,5vw,68px) 0 clamp(22px,3vw,46px)}.architecture-project-entry{break-inside:avoid;margin-bottom:var(--architecture-gap);min-width:0;color:var(--ink);transition:transform .42s var(--ease-out);display:block;position:relative;overflow:hidden}.architecture-project-entry figure,.architecture-project-image{margin:0}.architecture-project-entry figure{background:var(--media-placeholder);width:100%;position:relative}.architecture-project-entry img,.architecture-project-image img{object-fit:cover;width:100%;height:100%;transition:transform .42s var(--ease-out);background:0 0;border:0;border-radius:0;display:block}.architecture-project-entry figcaption{opacity:0;background:#fafaf8b8;place-items:center;padding:20px;transition:opacity .22s;display:grid;position:absolute;inset:0}.architecture-project-entry h2{color:#242422;text-align:center;max-width:16ch;margin:0;font-size:clamp(1.1rem,1.7vw,1.65rem);font-weight:560;line-height:1.3}.architecture-project-entry img{object-fit:contain;height:auto}.architecture-project-entry:hover,.architecture-project-entry:focus-visible{z-index:1;transform:scale(1.025)}.architecture-project-entry:hover figcaption,.architecture-project-entry:focus-visible figcaption{opacity:1}.architecture-project__back{color:var(--muted);text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:.28em;margin-top:clamp(48px,7vw,92px);font-size:.78rem;display:inline-block}.architecture-project>.page-hero{padding-top:clamp(36px,5vw,72px)}.architecture-project__links{flex-wrap:wrap;gap:12px 24px;padding-top:24px;display:flex}.architecture-project__links a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--hairline);text-underline-offset:.28em;font-size:.78rem}.architecture-project__links a:hover{text-decoration-color:currentColor}.architecture-project__images{gap:0;padding-top:clamp(46px,7vw,92px);display:grid}@media (width<=820px){.page-hero{grid-template-columns:1fr;gap:20px;padding-top:72px}.page-hero__description{grid-column:1;max-width:36ch}.architecture-project-list{column-count:2}}@media (width<=560px){.architecture-project-list{column-count:1;padding-top:32px}}:root{--icon-size-meta:14px;--icon-size-control:18px;--icon-size-cursor:20px;--icon-stroke:1.75;--cursor-shell-size:36px}.icon{color:currentColor;stroke-width:var(--icon-stroke);stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex:none;display:block}.icon--meta{width:var(--icon-size-meta);height:var(--icon-size-meta)}.icon--control{width:var(--icon-size-control);height:var(--icon-size-control)}.icon--cursor{width:var(--icon-size-cursor);height:var(--icon-size-cursor)}html{scrollbar-width:none}html::-webkit-scrollbar{width:0;height:0}html ::-webkit-scrollbar{width:0;height:0}html[data-cursor-mode=custom],html[data-cursor-mode=custom] *{cursor:none!important}.site-cursor{z-index:1000;pointer-events:none;opacity:0;contain:layout style;width:1px;height:1px;color:var(--cursor-color);mix-blend-mode:exclusion;transition:opacity .16s var(--ease-out);position:fixed;top:0;left:0;transform:translate(-80px,-80px)}html:not([data-cursor-capability=fine]) .site-cursor{display:none}.site-cursor.is-visible{opacity:1}.site-cursor:not(.is-visible){transition:none}.site-cursor__inner,.site-cursor__body{width:1px;height:1px;position:relative}.site-cursor__body{transform-origin:0 0;transition:transform .12s var(--ease-out)}.site-cursor__body.is-pressed{transform:scale(.82)}.site-cursor__shape{opacity:0;transform-origin:50%;width:28px;height:28px;transition:opacity .12s var(--ease-out), transform .18s var(--ease-out);place-items:center;display:grid;position:absolute;top:0;left:0;transform:translate(-50%,-50%)scale(.7)rotate(-10deg)}.site-cursor__shape svg{display:block}.site-cursor__shape--default{width:var(--icon-size-cursor);height:var(--icon-size-cursor);opacity:1;transform-origin:4px 4px;place-items:start;transform:translate(-4px,-4px)scale(1)}.site-cursor[data-state=interactive] .site-cursor__shape--default,.site-cursor[data-state=nav] .site-cursor__shape--default,.site-cursor[data-state=highlight] .site-cursor__shape--default,.site-cursor[data-state=capsule] .site-cursor__shape--default,.site-cursor[data-state=media] .site-cursor__shape--default,.site-cursor[data-state=photo-open] .site-cursor__shape--default,.site-cursor[data-state=photo-shrink] .site-cursor__shape--default,.site-cursor[data-state=photo-close] .site-cursor__shape--default,.site-cursor[data-state=text] .site-cursor__shape--default{opacity:0;transform:translate(-4px,-4px)scale(.72)rotate(-8deg)}.site-cursor[data-state=interactive] .site-cursor__shape--interactive,.site-cursor[data-state=nav] .site-cursor__shape--interactive,.site-cursor[data-state=highlight] .site-cursor__shape--highlight,.site-cursor[data-state=capsule] .site-cursor__shape--capsule,.site-cursor[data-state=media] .site-cursor__shape--media,.site-cursor[data-state=text] .site-cursor__shape--text{opacity:1;transform:translate(-50%,-50%)scale(1)}.site-cursor[data-state=interactive] .site-cursor__shape--interactive{transform:translate(-50%,-50%)scale(1.08)}.site-cursor[data-state=nav] .site-cursor__shape--interactive{transform:translate(-50%,-50%)scaleX(-1)scale(1.08)}.site-cursor__shape--text{width:26px;height:26px}.site-cursor__shape--photo-nav{opacity:0;transform:translate(-50%,-50%)scale(.15)}.site-cursor__shape--highlight{width:32px;height:32px}.site-cursor[data-state=highlight] .site-cursor__shape--highlight{transform:translate(-50%,-50%)scale(1)}.site-cursor__shape--capsule{color:#fff;mix-blend-mode:difference;width:20px;height:20px;transform:translate(-50%,-50%)scale(.15)}.site-cursor__shape--capsule .icon{fill:currentColor;stroke:currentColor}.site-cursor[data-state=capsule] .site-cursor__shape--capsule{opacity:1;transform:translate(-50%,-50%)scale(1.28)}.site-cursor__shape--photo-open,.site-cursor__shape--photo-shrink,.site-cursor__shape--photo-close,.site-cursor__shape--media{width:var(--cursor-shell-size);height:var(--cursor-shell-size);transform:translate(-50%,-50%)scale(.15)}.site-cursor__photo-circle{background:0 0;border:1.5px solid;border-radius:50%;place-items:center;width:100%;height:100%;display:grid}.site-cursor__photo-circle .icon{color:var(--cursor-icon-color)}.site-cursor[data-state=media] .site-cursor__shape--media,.site-cursor[data-state=photo-open] .site-cursor__shape--photo-open,.site-cursor[data-state=photo-shrink] .site-cursor__shape--photo-shrink,.site-cursor[data-state=photo-close] .site-cursor__shape--photo-close{opacity:1;transform:translate(-50%,-50%)scale(1)}.site-cursor[data-state=photo-open] .site-cursor__shape--photo-open{transform:translate(-50%,-50%)scale(1.04)}html[data-page=photos] .site-cursor__shape{transition:opacity .12s var(--ease-out), transform .3s var(--ease-out)}html[data-page=photos] .site-cursor[data-state=interactive] .site-cursor__shape--interactive,html[data-page=photos] .site-cursor[data-state=nav] .site-cursor__shape--interactive{opacity:0;transform:translate(-50%,-50%)scale(.15)}html[data-page=photos] .site-cursor[data-state=interactive] .site-cursor__shape--photo-nav,html[data-page=photos] .site-cursor[data-state=nav] .site-cursor__shape--photo-nav{opacity:1;transform:translate(-50%,-50%)scale(1)}html[data-page=photos] .site-cursor__shape--photo-nav{width:var(--cursor-shell-size);height:var(--cursor-shell-size);border:1.5px solid;border-radius:50%}html[data-page=photos] .site-cursor[data-state=nav] .site-cursor__shape--photo-nav{background:color-mix(in oklab, currentColor 24%, transparent);border-color:#0000}html[data-page=photos] .site-cursor__shape--highlight{transform:translate(-50%,-50%)scale(.15)}html[data-page=photos] .site-cursor[data-state=highlight] .site-cursor__shape--highlight{transform:translate(-50%,-50%)scale(1)}.site-cursor__label{white-space:nowrap;opacity:0;max-width:160px;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);border:1px solid;border-radius:999px;padding:3px 8px;font-size:10px;line-height:1.2;display:block;position:absolute;top:0;left:22px;transform:translateY(-50%)scale(.86)}.site-cursor__label:not([hidden]){opacity:1;transform:translateY(-50%)scale(1)}.scroll-progress{z-index:8;top:max(12px, env(safe-area-inset-top));right:max(7px, env(safe-area-inset-right));pointer-events:none;opacity:0;background:color-mix(in oklab, var(--ink) 15%, transparent);width:1px;height:min(160px,25vh);transition:opacity .18s var(--ease-out);position:fixed}.scroll-progress:after{height:100%;color:var(--accent);content:"";transform:scaleY(var(--scroll-progress,0));transform-origin:top;background:currentColor;position:absolute;inset:0 0 auto}.scroll-progress.is-visible{opacity:.78}@media (prefers-reduced-motion:reduce){.site-cursor,.site-cursor__body,.site-cursor__shape,.site-cursor__label,.scroll-progress{transition:none}.site-cursor[data-state=capsule] .site-cursor__shape--capsule{transform:translate(-50%,-50%)scale(1.28)}}@media (any-hover:none) and (any-pointer:coarse){.site-cursor{display:none}}
