@font-face{font-family:Geist;src:url(/fonts/Geist-var.woff2)format("woff2");font-weight:300 800;font-style:normal;font-display:swap}@font-face{font-family:Geist Fallback;src:local(Arial);size-adjust:104%;ascent-override:92%;descent-override:24%}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0b0d;--surface:#131316;--surface-2:#1b1b20;--media-bg:#151519;--text:#f1f0ec;--text-soft:#c8c8cf;--muted:#8f8f99;--accent:#5b8def;--accent-strong:#7fa6ff;--accent-soft:#5b8def24;--on-accent:#0b0b0d;--line:#f1f0ec17;--line-strong:#f1f0ec29;--nav-bg:#0b0b0db8;--shadow:0 40px 90px -40px #000000e6;--accent-line:#5b8def80;--system-face:#171c27;--system-edge:#5b8def3d;--deck-dim:.55;--shadow-pop:0 16px 40px -12px #0009;--r-card:16px;--r-media:12px;--r-thumb:8px;--r-pill:999px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease:var(--ease-out);--d-press:.14s;--d-hover:.18s;--d-ui:.22s;--d-exit:.15s;--d-enter:.24s;--d-page:.24s;--d-morph:.42s;--d-reveal:.56s;--sans:"Geist", "Geist Fallback", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--fs-display:clamp(2.75rem, 1.6rem + 4.6vw, 5.5rem);--fs-h1:clamp(2.5rem, 1.5rem + 3.4vw, 4.5rem);--fs-h2:clamp(2rem, 1.4rem + 1.9vw, 3rem);--fs-h3:clamp(1.625rem, 1.2rem + 1.2vw, 2.5rem);--fs-h4:clamp(1.375rem, 1.15rem + .7vw, 1.875rem);--fs-title:1.25rem;--fs-lead:clamp(1.125rem, 1rem + .45vw, 1.375rem);--fs-body:1.0625rem;--fs-ui:.9375rem;--fs-small:.8125rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--section:clamp(80px, 5vw + 56px, 136px);--gutter:clamp(16px, 4vw, 32px);--nav-h:64px}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f5f3;--surface:#fff;--surface-2:#ececea;--media-bg:#e6e6e3;--text:#111113;--text-soft:#3a3a40;--muted:#6b6b74;--accent:#2b63d9;--accent-strong:#1f4fb3;--accent-soft:#2b63d91a;--on-accent:#fff;--line:#1111131a;--line-strong:#1111132e;--nav-bg:#f5f5f3c7;--shadow:0 1px 2px #1111130d, 0 20px 40px -20px #11111338;--accent-line:#2b63d973;--system-face:#f1f5fd;--system-edge:#2b63d933;--deck-dim:.5;--shadow-pop:0 16px 40px -12px #11111333}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;background:var(--bg)}body{font-family:var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01", "cv11";line-height:1.6}a{color:inherit;text-decoration:none}a,button,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}img,video{max-width:100%}.icon{vertical-align:-.15em;flex-shrink:0;display:inline-block}::selection{background:var(--accent-soft);color:var(--accent-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:is(.card-ext,.text-link,.logo,.archive-summary,.contact-email):focus-visible{border-radius:var(--r-thumb)}main:focus{outline:none}#main{scroll-margin-top:var(--nav-h)}.skip-link{z-index:30;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-size:var(--fs-ui);padding:10px 16px;font-weight:500;position:fixed;top:12px;left:16px;translate:0 -160%}.skip-link:focus-visible{translate:0}.container{width:min(1180px, 100% - 2 * var(--gutter));margin:0 auto}h1,h2,h3,h4{letter-spacing:-.025em;font-weight:600;line-height:1.1}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}html[lang=zh-CN] :is(h1,h2,h3,h4):not(:where(.card-title,.cs-title,.cs-next-title)){letter-spacing:0;line-height:1.25}html[lang=zh-CN] :is(.cs-lede,.about-copy p:first-child,.exp-project,.sys-row .sys-text,.sys-rail .sys-text){letter-spacing:0;line-height:1.6}.site-nav{z-index:10;position:sticky;top:0}.site-nav:before{content:"";z-index:-1;background:var(--nav-bg);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);position:absolute;inset:0}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:scroll()){.site-nav:before{animation:linear both nav-solid;animation-timeline:scroll(root);animation-range:0 64px}}}@keyframes nav-solid{0%{opacity:0}}.nav-inner{height:var(--nav-h);justify-content:space-between;align-items:center;display:flex}.logo{font-weight:600;font-size:var(--fs-body);letter-spacing:-.01em}.nav-controls{align-items:center;gap:20px;display:flex}.nav-links{font-size:var(--fs-ui);color:var(--muted);gap:4px;display:flex}.nav-links a{border-radius:var(--r-pill);transition:color var(--d-hover) ease, background-color var(--d-hover) ease;padding:6px 12px}@media (hover:hover) and (pointer:fine){.nav-links a:hover{color:var(--text);background:var(--surface-2)}}.nav-links a[aria-current=true],.site-menu a[aria-current=true]{color:var(--text);background:var(--surface-2)}.lang-switch{border:1px solid var(--line);border-radius:var(--r-pill);grid-template-columns:1fr 1fr;gap:0;padding:3px;display:grid;position:relative}.lang-thumb{border-radius:var(--r-pill);background:var(--surface-2);pointer-events:none;width:calc(50% - 3px);position:absolute;top:3px;bottom:3px;left:3px}html[lang=zh-CN] .lang-thumb{translate:100%}@media (prefers-reduced-motion:no-preference){.lang-thumb{transition:translate var(--d-ui) var(--ease-in-out)}.lang-btn[aria-pressed=true],.face-switch button[aria-pressed=true]{transition:color var(--d-ui) var(--ease-in-out), scale var(--d-press) var(--ease-out)}}.lang-btn{border-radius:var(--r-pill);min-width:38px;color:var(--muted);cursor:pointer;font-size:var(--fs-small);font-family:var(--sans);transition:color var(--d-hover) ease, scale var(--d-press) var(--ease-out);background:0 0;border:0;padding:4px 10px;position:relative}.lang-btn[aria-pressed=true]{color:var(--text)}@media (hover:hover) and (pointer:fine){.lang-btn:hover{color:var(--text)}}.mode-switch{border:1px solid var(--line);border-radius:var(--r-pill);flex:none;gap:2px;padding:3px;display:flex}.mode-opt{border-radius:var(--r-pill);width:32px;height:26px;color:var(--muted);transition:color var(--d-hover) ease, background-color var(--d-hover) ease;place-items:center;display:inline-grid}.mode-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mode-opt[aria-current]{color:var(--text);background:var(--surface-2)}@media (hover:hover) and (pointer:fine){a.mode-opt:hover{color:var(--text)}}.mode-switch-menu{display:none}@media (max-width:480px){.mode-switch-bar{display:none}.site-menu .mode-switch-menu{grid-template-columns:1fr 1fr;margin:8px 6px 4px;display:grid}.site-menu .mode-opt{width:auto;height:auto;min-height:36px;font-size:var(--fs-small);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.site-menu .mode-label{clip-path:none;width:auto;height:auto;position:static}}.icon-btn{appearance:none;border:1px solid var(--line);border-radius:var(--r-pill);width:34px;height:34px;color:var(--muted);cursor:pointer;transition:color var(--d-hover) ease, background-color var(--d-hover) ease, scale var(--d-press) var(--ease-out);background:0 0;flex:none;place-items:center;padding:0;display:inline-grid}@media (hover:hover) and (pointer:fine){.icon-btn:hover{color:var(--text);background:var(--surface-2)}}.icon-btn>span{place-items:center;display:grid}.motion-toggle .i-play{display:none}html[data-clips=off] .motion-toggle .i-play{display:grid}html[data-clips=off] .motion-toggle .i-pause,.theme-toggle .icon-sun{display:none}html[data-theme=dark] .theme-toggle .icon-sun,html:not([data-theme]) .theme-toggle .icon-sun{display:grid}html[data-theme=dark] .theme-toggle .icon-moon,html:not([data-theme]) .theme-toggle .icon-moon,.menu-btn,.menu-btn .i-close{display:none}.site-nav:has(.site-menu:popover-open) .menu-btn .i-list{display:none}.site-nav:has(.site-menu:popover-open) .menu-btn .i-close{display:grid}.site-menu{inset:calc(var(--nav-h) + 8px) 16px auto auto;border:1px solid var(--line-strong);border-radius:var(--r-card);background:var(--surface);width:min(260px,100vw - 32px);color:var(--text);box-shadow:var(--shadow-pop);transform-origin:100% 0;margin:0;padding:6px;position:fixed}.site-menu:popover-open{display:grid}.site-menu a{border-radius:var(--r-pill);min-height:44px;font-size:var(--fs-body);color:var(--text-soft);transition:color var(--d-hover) ease, background-color var(--d-hover) ease;align-items:center;padding:0 14px;display:flex}@media (hover:hover) and (pointer:fine){.site-menu a:hover{color:var(--text);background:var(--surface-2)}}@media (prefers-reduced-motion:no-preference){.site-menu{opacity:0;transition:opacity var(--d-exit) var(--ease-out), scale var(--d-exit) var(--ease-out), translate var(--d-exit) var(--ease-out), display var(--d-exit) allow-discrete, overlay var(--d-exit) allow-discrete;translate:0 -4px;scale:.96}.site-menu:popover-open{opacity:1;transition-duration:var(--d-ui);translate:0;scale:1}}@media (prefers-reduced-motion:reduce){.site-menu{opacity:0;transition:opacity .15s ease, display .15s allow-discrete, overlay .15s allow-discrete}.site-menu:popover-open{opacity:1}}@starting-style{.site-menu:popover-open{opacity:0;translate:0 -4px;scale:.96}}@media (min-width:861px){.site-menu{display:none!important}}.hero{grid-template-columns:repeat(12,minmax(0,1fr));gap:40px 24px;padding-top:56px;display:grid}.hero-head{grid-column:1/-1;min-width:0}.hero-body{grid-column:1/span 4;align-self:start;min-width:0}.eyebrow{font-size:var(--fs-ui);color:var(--muted);margin-bottom:var(--s-5);flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.eyebrow-name{color:var(--text);font-weight:600}.eyebrow-name:after{content:","}h1.hero-title{font-size:min(var(--fs-display), calc(13vw - 5px));letter-spacing:-.045em;text-wrap:balance;margin:0;line-height:.94}html[lang=zh-CN] h1.hero-title{word-break:keep-all;line-height:1.12}.hero-intro{font-size:var(--fs-lead);color:var(--text-soft);max-width:30ch;margin-bottom:28px}.button-row{flex-wrap:wrap;gap:10px;display:flex}.button{border-radius:var(--r-pill);border:1px solid var(--line-strong);font-size:var(--fs-ui);white-space:nowrap;-webkit-user-select:none;user-select:none;color:var(--text);transition:color var(--d-hover) ease, background-color var(--d-hover) ease, border-color var(--d-hover) ease, scale var(--d-press) var(--ease-out);background:0 0;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-weight:500;display:inline-flex}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.button.primary .icon{transition:translate var(--d-hover) var(--ease-out)}@media (hover:hover) and (pointer:fine){.button:hover{background:var(--surface-2);border-color:var(--line-strong)}.button.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.button.primary:hover .icon{translate:3px}}.hero-reel{grid-column:5/-1;grid-template-rows:auto auto;grid-template-columns:2fr 1fr;gap:12px;min-width:0;display:grid}.reel-tile{border-radius:var(--r-media);flex-direction:column;gap:8px;min-width:0;display:flex}.reel-tile:first-child{grid-row:1/span 2}.reel-media{aspect-ratio:16/9;border-radius:var(--r-media);background:var(--media-bg);border:1px solid var(--line);transition:border-color var(--d-hover) ease, scale var(--d-press) var(--ease-out);display:block;position:relative;overflow:hidden}.reel-tile:first-child .reel-media{aspect-ratio:auto;box-shadow:var(--shadow);flex:1}.reel-media video,.reel-media img{object-fit:cover;width:100%;height:100%;transition:scale var(--d-ui) var(--ease-out);display:block}@media (hover:hover) and (pointer:fine){.reel-tile:hover .reel-media{border-color:var(--accent-line)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.reel-tile:hover video{scale:1.02}}.reel-caption{font-size:var(--fs-small);color:var(--muted);justify-content:space-between;align-items:baseline;gap:8px;display:flex}.reel-title{font-size:var(--fs-ui);color:var(--text-soft);font-weight:500}@media (prefers-reduced-motion:no-preference){html:not([data-arrival=internal]) .reel-media{animation:tile-in var(--d-reveal) var(--ease-out) backwards;animation-delay:calc(.12s + var(--i,0) * 80ms)}html:not([data-arrival=internal]) .reel-caption{animation:.2s backwards fade-in;animation-delay:calc(.48s + var(--i,0) * 80ms)}}@media (prefers-reduced-motion:reduce){html:not([data-arrival=internal]) .reel-tile{animation:.2s backwards fade-in}}@keyframes tile-in{0%{clip-path:inset(0 0 100% round 12px)}to{clip-path:inset(0 round 12px)}}@keyframes fade-in{0%{opacity:0}}main>section:not(.hero):not(.cs-section):not(.cs-system){padding-top:var(--section)}main>section.projects-all{padding-top:var(--s-7)}.section-title{font-size:var(--fs-h2);letter-spacing:-.03em;margin-bottom:var(--s-7);line-height:1.05}.section-title:has(+.section-subtitle){margin-bottom:var(--s-3)}.section-subtitle{color:var(--text-soft);font-size:var(--fs-body);max-width:56ch;margin-bottom:var(--s-7);text-wrap:balance}.text-link,.card-cta,.card-ext{white-space:nowrap;transition:color var(--d-hover) ease;align-items:center;gap:5px;font-size:.9rem;font-weight:500;display:inline-flex}.text-link,.card-ext{color:var(--muted)}@media (hover:hover) and (pointer:fine){.text-link:hover,.card-ext:hover{color:var(--text)}}.card-cta{color:var(--accent-strong)}.card-cta .icon{transition:translate var(--d-hover) var(--ease-out)}.card-kicker{justify-content:space-between;align-items:baseline;gap:12px;font-size:.86rem;display:flex}.card-tag{color:var(--accent-strong);font-weight:500}.card-year{color:var(--muted);font-variant-numeric:tabular-nums}.stack-card,.project-card{isolation:isolate}.card-title{width:fit-content}.card-title a:after{content:"";z-index:1;border-radius:var(--r-card);position:absolute;inset:0}.card-ext,.face-switch,.yt-facade{z-index:2;position:relative}@supports selector(:has(a)){.card-title a:focus-visible{outline:none}:is(.stack-card,.project-card):has(.card-title a:focus-visible){outline:2px solid var(--accent);outline-offset:4px}}.card-links{align-items:center;gap:20px;display:flex}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){:is(.stack-card,.project-card):hover .card-cta .icon{translate:3px}}.stack{display:block}.stack-card{top:calc(var(--nav-h) + 16px + var(--i,0) * 10px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);transition:border-color var(--d-hover) ease;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:0;margin-bottom:28px;display:grid;position:sticky;overflow:hidden}.stack-media{background:var(--media-bg);border-right:1px solid var(--line);border-radius:calc(var(--r-card) - 1px) 0 0 calc(var(--r-card) - 1px);align-self:stretch;display:block;position:relative;overflow:hidden}.stack-media:before{content:"";padding-top:56.25%;display:block}.stack-media>video,.stack-media>img{object-fit:cover;width:100%;height:100%;transition:scale var(--d-ui) var(--ease-out);display:block;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.stack-card:hover{border-color:var(--accent-line)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.stack-card:hover .stack-media>video,.stack-card:hover .stack-media>img{scale:1.02}}.stack-body{grid-template:"kicker switch""title title""faces faces"1fr"links links"/minmax(0,1fr) auto;column-gap:16px;min-width:0;padding:28px 32px;display:grid}.stack-card .card-kicker{grid-area:kicker;align-self:center}.stack-card .card-title{grid-area:title;margin-top:14px;font-size:clamp(1.6rem,2.6vw,2.2rem)}.faces{grid-area:faces;min-width:0;margin-top:12px;display:grid}.face{flex-direction:column;grid-area:1/1;min-width:0;display:flex}.stack-card .card-summary{color:var(--muted);-webkit-line-clamp:5;-webkit-box-orient:vertical;font-size:.98rem;line-height:1.6;display:-webkit-box;overflow:hidden}.facts{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:20px;list-style:none;display:flex}.facts li{border-radius:var(--r-pill);color:var(--text-soft);background:var(--surface-2);align-items:center;padding:4px 10px;font-size:.76rem;font-weight:500;display:inline-flex}.stack-card .card-links{grid-area:links;padding-top:22px}@media (prefers-reduced-motion:no-preference) and (min-width:861px){@supports (animation-timeline:view()) and (animation-range:entry){.stack-card:not(:last-child){transform-origin:50% 0;animation:linear both deck-back;animation-timeline:var(--tl);animation-range:entry calc(100vh - 510px) entry calc(100vh - 120px)}.stack-card:not(:last-child):after{content:"";z-index:3;border-radius:inherit;background:var(--bg);opacity:0;pointer-events:none;animation:linear both deck-dim;animation-timeline:var(--tl);animation-range:entry calc(100vh - 510px) entry calc(100vh - 120px);position:absolute;inset:0}.stack-card:has(:focus-visible){animation:none}.stack-card:has(:focus-visible):after{animation:none}}}@keyframes deck-back{to{transform:scale(.95)}}@keyframes deck-dim{to{opacity:var(--deck-dim)}}.stack-card:has(:focus-visible){z-index:2}.face-switch{border:1px solid var(--line);border-radius:var(--r-pill);background:0 0;grid-area:switch;grid-template-columns:1fr 1fr;align-self:center;padding:3px;display:grid;position:relative}.face-switch:before{content:"";border-radius:var(--r-pill);background:var(--surface-2);width:calc(50% - 3px);transition:background-color var(--d-hover) ease;position:absolute;top:3px;bottom:3px;left:3px}.face-switch button{appearance:none;border-radius:var(--r-pill);min-width:64px;font:500 var(--fs-small) / 1 var(--sans);color:var(--muted);cursor:pointer;transition:color var(--d-hover) ease, scale var(--d-press) var(--ease-out);background:0 0;border:0;padding:7px 14px;position:relative}.face-switch button[aria-pressed=true]{color:var(--text)}@media (hover:hover) and (pointer:fine){.face-switch button:hover{color:var(--text)}}.stack-card[data-face=system] .face-switch:before{background:var(--accent-soft);translate:100%}.stack-card[data-face=system] .face-switch button[data-face=system]{color:var(--accent-strong)}[data-face=story] .face-system,[data-face=system] .face-story{opacity:0}.stack-body{transition:background-color var(--d-ui) ease}.stack-card[data-face=system] .stack-body{background:var(--system-face)}.sys-steps{gap:14px;list-style:none;display:grid;position:relative}.sys-rail{padding-left:22px}.sys-rail:before,.sys-rail:after{content:"";border-radius:2px;width:2px;position:absolute;top:6px;bottom:6px;left:3px}.sys-rail:before{background:var(--line-strong)}.sys-rail:after{background:var(--accent);transform-origin:50% 0}.sys-label{font-size:var(--fs-small);color:var(--muted);margin-bottom:2px;display:block}.sys-rail .sys-text{font-size:var(--fs-ui);color:var(--text);text-wrap:pretty;line-height:1.45}.face{transition:opacity .15s}@media (prefers-reduced-motion:no-preference){.face-switch:before{transition:background-color var(--d-ui) var(--ease-in-out), translate var(--d-ui) var(--ease-in-out)}.face{transition:opacity var(--d-exit) var(--ease-out), translate var(--d-exit) var(--ease-out)}[data-face=story] .face-system{translate:12px}[data-face=system] .face-story{translate:-12px}[data-face=story] .face-story,[data-face=system] .face-system{transition:opacity var(--d-enter) var(--ease-out) 60ms, translate var(--d-enter) var(--ease-out) 60ms}.face-system .sys-rail:after{transition:scale var(--d-exit) var(--ease-out);scale:1 0}[data-face=system] .face-system .sys-rail:after{transition:scale .36s var(--ease-in-out) .12s;scale:1}.face-system .sys-steps li{opacity:.35;transition:opacity var(--d-exit) ease}[data-face=system] .face-system .sys-steps li{opacity:1;transition:opacity .2s ease calc(.14s + var(--s,0) * 90ms)}}.yt-facade{appearance:none;cursor:pointer;width:100%;font:inherit;color:var(--text);border:0;margin:0;padding:0}.yt-play-btn{border-radius:var(--r-pill);width:60px;height:60px;color:var(--on-accent);background:var(--accent);transition:background-color var(--d-hover) ease, scale var(--d-hover) var(--ease-out);z-index:3;place-items:center;margin:auto;display:grid;position:absolute;inset:0;box-shadow:0 10px 30px #00000059}.yt-play-btn>span{place-items:center;display:grid}.yt-play-btn .i-play .icon{margin-left:2px}.yt-play-btn .i-spin{display:none}.yt-facade:focus-visible .yt-play-btn{background:var(--accent-strong)}@media (hover:hover) and (pointer:fine){.yt-facade:hover .yt-play-btn{background:var(--accent-strong)}}@media (prefers-reduced-motion:no-preference){.yt-facade:focus-visible .yt-play-btn{scale:1.04}.yt-facade:active .yt-play-btn{transition-duration:var(--d-press);scale:.97}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.yt-facade:hover .yt-play-btn{scale:1.04}.yt-facade:hover:active .yt-play-btn{scale:.97}}.yt-facade.is-loading .i-play{display:none}.yt-facade.is-loading .i-spin{display:grid}@media (prefers-reduced-motion:no-preference){.yt-facade.is-loading .i-spin{animation:.6s linear infinite spin}}@keyframes spin{to{rotate:360deg}}.yt-facade iframe{z-index:4;opacity:0;width:100%;height:100%;transition:opacity var(--d-ui) var(--ease-out);border:0;position:absolute;inset:0}.yt-facade.is-ready iframe{opacity:1}.yt-facade.is-ready img,.yt-facade.is-ready .yt-play-btn{opacity:0;transition:opacity var(--d-exit) ease}.others{margin-top:56px}.others-title{font-size:var(--fs-title);color:var(--text-soft);margin-bottom:18px;font-weight:500}.others-grid,.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);transition:border-color var(--d-hover) ease, scale var(--d-press) var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden}@media (hover:hover) and (pointer:fine){.project-card:hover{border-color:var(--accent-line)}}.project-media{aspect-ratio:16/9;background:var(--media-bg);border-bottom:1px solid var(--line);border-radius:calc(var(--r-card) - 1px) calc(var(--r-card) - 1px) 0 0;display:block;position:relative;overflow:hidden}.project-media img,.project-media video{object-fit:cover;width:100%;height:100%;transition:scale var(--d-ui) var(--ease-out);display:block}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.project-card:hover .project-media img,.project-card:hover .project-media video{scale:1.02}}.project-content{flex-direction:column;flex:1;padding:20px 22px 22px;display:flex}.project-card .card-kicker{margin-bottom:10px}.project-card .card-title{margin-bottom:8px;font-size:1.35rem}.project-card .card-summary{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.94rem;line-height:1.6;display:-webkit-box;overflow:hidden}.project-card .card-links{margin-top:auto;padding-top:18px}.project-card.is-row{grid-template-columns:128px minmax(0,1fr);align-items:center;gap:14px;padding:12px;display:grid}.is-row .project-media{aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--r-thumb)}.is-row .project-content{gap:4px;padding:0}.is-row .card-title{font-size:var(--fs-ui);order:-1;margin:0}.is-row .card-kicker{margin-block:0}.is-row .card-summary,.is-row .card-cta{display:none}.is-row .card-links{padding-top:4px}.archive{border-top:1px solid var(--line);margin-top:28px}.archive-summary{cursor:pointer;color:var(--muted);font-size:var(--fs-title);transition:color var(--d-hover) ease;justify-content:flex-start;align-items:center;gap:12px;padding:20px 0;font-weight:500;list-style:none;display:flex}.archive-summary::-webkit-details-marker{display:none}.archive[open] .archive-summary{color:var(--text)}@media (hover:hover) and (pointer:fine){.archive-summary:hover{color:var(--text)}}.archive-label{align-items:center;gap:10px;display:inline-flex}.archive-count{border-radius:var(--r-pill);background:var(--surface-2);min-width:24px;height:24px;color:var(--text-soft);font-size:var(--fs-small);font-variant-numeric:tabular-nums;place-items:center;padding:0 8px;display:inline-grid}.archive[open] .archive-chevron{rotate:90deg}.archive-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding-bottom:8px;display:grid}@media (prefers-reduced-motion:no-preference){.archive-chevron{transition:rotate var(--d-ui) var(--ease-out)}@supports (interpolate-size:allow-keywords){.archive{interpolate-size:allow-keywords}.archive::details-content{opacity:0;block-size:0;transition:block-size var(--d-ui) var(--ease-out), opacity var(--d-ui) var(--ease-out), content-visibility var(--d-ui) allow-discrete;overflow:clip}.archive[open]::details-content{opacity:1;block-size:auto}}}html[data-theme=light] :is(.stack-media,.project-media,.reel-media,.cs-video):after{content:"";border-radius:inherit;pointer-events:none;z-index:1;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #11111314}.exp{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;column-gap:clamp(32px,5vw,72px);display:grid}.exp-credit{min-width:0}.exp-cover{aspect-ratio:460/215;border-radius:var(--r-media);border:1px solid var(--line);background:var(--media-bg);width:100%;transition:border-color var(--d-hover) ease;display:block;overflow:hidden}@media (hover:hover) and (pointer:fine){.exp-cover:hover{border-color:var(--accent-line)}}.exp-cover img{object-fit:cover;width:100%;height:100%;display:block}.exp-role{margin-top:var(--s-5);font-size:var(--fs-h3)}.exp-project{font-size:var(--fs-lead);color:var(--text);margin-top:8px;font-weight:500;line-height:1.35}.exp-org{font-size:var(--fs-ui);color:var(--text-soft);margin-top:4px}.exp-dates{font-size:var(--fs-small);color:var(--muted);font-variant-numeric:tabular-nums;margin-top:8px}.exp-links{flex-wrap:wrap;gap:8px 20px;margin-top:20px;display:flex}.text-link.exp-shipped{color:var(--accent-strong);white-space:normal}.exp-shipped .icon{transition:translate var(--d-hover) var(--ease-out)}@media (hover:hover) and (pointer:fine){.text-link.exp-shipped:hover{color:var(--accent-strong)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.exp-shipped:hover .icon{translate:2px -2px}}.exp-bullets{gap:24px;list-style:none;display:grid}.exp-bullets li{font-size:var(--fs-body);color:var(--text-soft);max-width:62ch;line-height:1.7}.about-layout{grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,3fr);align-items:start;gap:clamp(32px,4vw,56px);display:grid}.about-photo-wrap{margin:0}.about-photo{aspect-ratio:4/5;object-fit:cover;border-radius:var(--r-media);border:1px solid var(--line);width:100%;height:auto;display:block}.about-copy p{color:var(--text-soft);font-size:var(--fs-body);max-width:60ch;margin-bottom:1em}.about-copy p:first-child{font-size:var(--fs-lead);letter-spacing:-.01em;color:var(--text);line-height:1.45}.about-copy p:last-child{margin-bottom:0}.about-side{min-width:0}.fact{grid-template-columns:1fr auto;gap:12px;padding:10px 0;display:grid}.fact:not(.fact-tools){border-bottom:1px solid var(--line)}.fact:first-child{padding-top:0}.fact dt{font-size:var(--fs-ui);color:var(--text-soft)}.fact dd{font-size:var(--fs-ui);color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.fact-tools{grid-template-columns:1fr;gap:4px}.fact-tools dd{color:var(--text-soft);font-weight:400}.contact-band{padding:0 0 8px}.contact-band .section-subtitle{margin-bottom:28px}.contact-email-row{flex-wrap:wrap;align-items:center;gap:16px 20px;display:flex}.contact-email{font-size:min(var(--fs-h2), 7vw);letter-spacing:-.03em;color:var(--text);overflow-wrap:anywhere;align-items:center;gap:14px;padding-bottom:8px;font-weight:600;line-height:1.1;display:inline-flex}.contact-email span{position:relative}.contact-email span:after{content:"";background:var(--accent);transform-origin:100%;border-radius:2px;height:3px;position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}.contact-email:focus-visible span:after{transform-origin:0;transform:scaleX(1)}.contact-email .icon{color:var(--accent-strong);transition:translate var(--d-hover) var(--ease-out)}@media (prefers-reduced-motion:no-preference){.contact-email span:after{transition:transform .25s var(--ease-out)}}@media (hover:hover) and (pointer:fine){.contact-email:hover span:after{transform-origin:0;transform:scaleX(1)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.contact-email:hover .icon{translate:3px -3px}}.copy-email{border:1px solid var(--line-strong);border-radius:var(--r-pill);color:var(--text);font:500 var(--fs-ui) / 1 var(--sans);cursor:pointer;transition:background-color var(--d-hover) ease, scale var(--d-press) var(--ease-out);background:0 0;padding:8px 14px;display:inline-grid}.copy-email[hidden]{display:none}.copy-state{transition:opacity var(--d-hover) ease;grid-area:1/1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.copy-done,.copy-email[data-state=done] .copy-idle{opacity:0}.copy-email[data-state=done] .copy-done{opacity:1}@media (prefers-reduced-motion:no-preference){.copy-state{transition:opacity var(--d-hover) ease, filter var(--d-hover) ease, scale var(--d-hover) var(--ease-out)}.copy-done,.copy-email[data-state=done] .copy-idle{filter:blur(2px);scale:.9}.copy-email[data-state=done] .copy-done{filter:none;scale:1}}@media (hover:hover) and (pointer:fine){.copy-email:hover{background:var(--surface-2)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.contact-links{gap:22px;margin-top:24px;display:flex}footer.container{margin-top:var(--s-9);border-top:1px solid var(--line);color:var(--muted);font-size:var(--fs-small);justify-content:space-between;gap:16px;padding:24px 0 40px;display:flex}.project-detail{padding-top:40px}.project-detail-back{margin-bottom:28px}.button-sm{font-size:var(--fs-ui);padding:8px 14px}.cs-header{max-width:860px}.cs-kicker{font-size:var(--fs-small);color:var(--text-soft);margin-bottom:14px;font-weight:500}.cs-title{width:fit-content;font-size:var(--fs-h1);letter-spacing:-.04em;margin-bottom:20px;line-height:1}.cs-lede{font-size:var(--fs-lead);color:var(--text-soft);letter-spacing:-.01em;max-width:40em;line-height:1.42}.cs-facts{margin:var(--s-6) 0;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:24px;display:grid}.cs-fact dt{font-size:var(--fs-small);color:var(--muted);margin-bottom:4px}.cs-fact dd{font-size:var(--fs-ui);color:var(--text-soft)}.cs-video{aspect-ratio:16/9;border-radius:var(--r-card);border:1px solid var(--line);background:var(--media-bg);width:100%;box-shadow:var(--shadow);display:block;position:relative;overflow:hidden}.cs-video img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cs-video iframe,.cs-video video{object-fit:cover;background:var(--media-bg);z-index:4;border:0;width:100%;height:100%;position:absolute;inset:0}.cs-h2{font-size:var(--fs-h4);letter-spacing:-.02em;margin-bottom:var(--s-4)}.cs-system{margin-top:var(--s-8);scroll-margin-top:calc(var(--nav-h) + 24px)}.sys-panel{background:var(--system-face);border:1px solid var(--system-edge);border-radius:var(--r-card);padding:28px 32px 32px}.sys-row{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:32px;padding-top:22px}.sys-row:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;top:0;left:0;right:0}.sys-row .sys-label{margin-bottom:8px}.sys-row .sys-text{font-size:var(--fs-lead);color:var(--text);text-wrap:pretty;font-weight:500;line-height:1.42}.cs-body{margin-top:var(--s-8);grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:start;column-gap:clamp(40px,6vw,96px);display:grid}.cs-main{grid-area:1/1;min-width:0}.cs-body.no-rail{grid-template-columns:minmax(0,1fr)}.cs-rail{top:calc(var(--nav-h) + 32px);grid-area:1/2;justify-items:start;gap:24px;display:grid;position:sticky}.cs-rail-links{justify-items:start;gap:16px;display:grid}.cs-toc-title{font-size:var(--fs-small);color:var(--muted);margin-bottom:8px}.cs-toc ol{border-left:1px solid var(--line);list-style:none}.cs-toc a{font-size:var(--fs-ui);color:var(--muted);transition:color var(--d-hover) ease, border-color var(--d-hover) ease;border-left:1px solid #0000;margin-left:-1px;padding:6px 16px;display:block}@media (hover:hover) and (pointer:fine){.cs-toc a:hover{color:var(--text-soft)}}.cs-toc a[aria-current=true]{color:var(--text);border-left-color:var(--accent)}.cs-section{scroll-margin-top:calc(var(--nav-h) + 24px)}.cs-section .cs-h2{margin:var(--s-8) 0 var(--s-4)}.cs-section:first-child .cs-h2{margin-top:0}.cs-section p{color:var(--text-soft);font-size:var(--fs-body);max-width:62ch;margin-bottom:1em;line-height:1.7}.cs-note{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);max-width:62ch;padding:24px 28px}.cs-section+.cs-note{margin-top:var(--s-6)}.cs-note h2{font-size:var(--fs-title);margin-bottom:6px}.cs-note p{color:var(--text-soft);font-size:var(--fs-ui)}.gallery{margin-top:var(--s-9);grid-template-columns:1fr 1fr;gap:24px;display:grid}.cs-facts+.gallery{margin-top:var(--s-4)}.gallery-figure{min-width:0;margin:0}.gallery-figure:first-child,.gallery-figure:last-child:nth-child(2n){grid-column:1/-1}.gallery-zoom{appearance:none;border-radius:var(--r-media);cursor:zoom-in;width:100%;transition:scale var(--d-press) var(--ease-out);background:0 0;border:0;padding:0;display:block}.gallery-zoom img{border-radius:var(--r-media);border:1px solid var(--line);background:var(--media-bg);width:100%;height:auto;transition:border-color var(--d-hover) ease;display:block}@media (hover:hover) and (pointer:fine){.gallery-zoom:hover img{border-color:var(--accent-line)}}@media (prefers-reduced-motion:no-preference){.gallery-zoom:active{scale:.98}}.gallery-caption{font-size:var(--fs-small);color:var(--muted);padding-top:10px}.lightbox{overscroll-behavior:contain;background:0 0;border:0;margin:auto;padding:0;overflow:visible}.lightbox-img{border-radius:var(--r-media);max-width:92vw;max-height:88vh;display:block}.lightbox-close{background:var(--surface);position:fixed;top:16px;right:16px}.lightbox::backdrop{background:#0b0b0ddb}@media (prefers-reduced-motion:no-preference){.lightbox,.lightbox::backdrop{transition:opacity var(--d-exit) var(--ease-out), display var(--d-exit) allow-discrete, overlay var(--d-exit) allow-discrete}.lightbox-img{transition:scale var(--d-exit) var(--ease-out)}.lightbox:not([open]),.lightbox:not([open])::backdrop{opacity:0}.lightbox:not([open]) .lightbox-img{scale:.96}.lightbox[open],.lightbox[open]::backdrop,.lightbox[open] .lightbox-img{transition-duration:var(--d-enter)}}@media (prefers-reduced-motion:reduce){.lightbox,.lightbox::backdrop{transition:opacity .15s ease, display .15s allow-discrete, overlay .15s allow-discrete}.lightbox:not([open]),.lightbox:not([open])::backdrop{opacity:0}}@starting-style{.lightbox[open],.lightbox[open]::backdrop{opacity:0}.lightbox[open] .lightbox-img{scale:.96}}.cs-next{margin-top:var(--s-9)}.cs-next-card{isolation:isolate;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);transition:border-color var(--d-hover) ease;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:32px;padding:24px;display:grid;position:relative}.cs-next-label{font-size:var(--fs-small);color:var(--muted)}.cs-next-title{width:fit-content;font-size:var(--fs-h2);margin:8px 0 12px}.cs-next-title a:after{content:"";z-index:1;border-radius:var(--r-card);position:absolute;inset:0}@supports selector(:has(a)){.cs-next-title a:focus-visible{outline:none}.cs-next-card:has(.cs-next-title a:focus-visible){outline:2px solid var(--accent);outline-offset:4px}}.cs-next-line{font-size:var(--fs-lead);color:var(--text-soft);max-width:36ch}.cs-next-media{aspect-ratio:16/9;border-radius:var(--r-media);background:var(--media-bg);position:relative;overflow:hidden}.cs-next-media img{object-fit:cover;width:100%;height:100%;transition:scale var(--d-ui) var(--ease-out);display:block}@media (hover:hover) and (pointer:fine){.cs-next-card:hover{border-color:var(--accent-line)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.cs-next-card:hover .cs-next-media img{scale:1.02}}.projects-all-page{padding-top:8px}@media (min-width:861px) and (max-width:1099px){.hero-body{grid-column:1/span 5}.hero-reel{grid-column:6/-1}}@media (max-width:1024px){.cs-body{grid-template-columns:1fr}.cs-rail{margin-bottom:var(--s-6);grid-area:auto/1;position:static}.cs-main{grid-row:auto}.cs-toc{display:none}.about-layout{grid-template-columns:minmax(0,3fr) minmax(0,7fr)}.about-side{grid-column:2}}@media (max-width:860px){.hero{padding-top:40px}.hero-head,.hero-body,.hero-reel{grid-column:1/-1}.stack-card{grid-template-columns:1fr;position:relative;top:auto}.stack-media{border-right:0;border-bottom:1px solid var(--line);border-radius:calc(var(--r-card) - 1px) calc(var(--r-card) - 1px) 0 0}.stack-body{padding:20px 20px 22px}.face-switch button{padding:9px 14px}.archive-grid{grid-template-columns:1fr}.sys-panel{padding:24px 22px 26px}.sys-row{grid-template-columns:1fr;row-gap:18px;padding:0 0 0 22px}.sys-row:after{width:2px;height:auto;inset:6px auto 6px 3px}.exp{row-gap:var(--s-6);grid-template-columns:1fr}.exp-cover{max-width:460px}.about-layout{grid-template-columns:1fr;gap:28px}.about-side{grid-column:auto}.about-photo-wrap{max-width:220px}:root{--nav-h:56px}.nav-inner{height:var(--nav-h);flex-wrap:nowrap;gap:8px;padding:0}.nav-controls{gap:8px;width:auto}.nav-links{display:none}.menu-btn{display:inline-grid}}@supports not selector(:popover-open){@media (max-width:860px){.menu-btn{display:none}.nav-links{flex-wrap:wrap;display:flex}.nav-inner{flex-wrap:wrap;height:auto;padding:12px 0}}}@media (max-width:600px){.stack-body{grid-template-rows:auto auto auto 1fr auto;grid-template-areas:"kicker kicker""title title""switch switch""faces faces""links links"}.face-switch{justify-self:start;margin-top:14px}.hero-reel{grid-template-columns:1fr 1fr}.reel-tile:first-child{grid-area:auto/1/auto/-1}.reel-tile:first-child .reel-media{aspect-ratio:16/9}.button-row{grid-template-columns:1fr 1fr;display:grid}.others-grid,.project-grid{grid-template-columns:1fr}.cs-facts{grid-template-columns:1fr 1fr;gap:16px 24px}.cs-fact-role{grid-column:1/-1}.gallery{grid-template-columns:1fr}.cs-next-card{grid-template-columns:1fr;gap:20px;padding:16px 16px 20px}.cs-next-media{order:-1}.contact-links{flex-wrap:wrap}footer{flex-direction:column;gap:6px}}@view-transition{navigation:auto}html:is(:active-view-transition,[data-vt-out]) .site-nav{view-transition-name:site-nav}html:is(:active-view-transition,[data-vt-out]) .site-nav:before{background:var(--bg)}::view-transition-old(root){animation-duration:var(--d-page);animation-timing-function:var(--ease-out)}::view-transition-new(root){animation-duration:var(--d-page);animation-timing-function:var(--ease-out)}::view-transition-old(site-nav){animation-duration:var(--d-page);animation-timing-function:var(--ease-out)}::view-transition-new(site-nav){animation-duration:var(--d-page);animation-timing-function:var(--ease-out)}html.no-transitions *,html.no-transitions :before,html.no-transitions :after{transition:none!important}::view-transition-group(cs-media){animation-duration:var(--d-morph);animation-timing-function:var(--ease-in-out)}::view-transition-group(cs-title){animation-duration:var(--d-morph);animation-timing-function:var(--ease-in-out)}::view-transition-image-pair(cs-media){isolation:isolate}::view-transition-old(cs-media){object-fit:cover;mix-blend-mode:plus-lighter;height:100%;animation-duration:var(--d-morph);animation-timing-function:linear;animation-fill-mode:both}::view-transition-new(cs-media){object-fit:cover;mix-blend-mode:plus-lighter;height:100%;animation-duration:var(--d-morph);animation-timing-function:linear;animation-fill-mode:both}::view-transition-old(cs-media){animation-name:vt-hold-out}::view-transition-new(cs-media){animation-name:vt-hold-in}@keyframes vt-hold-out{0%,60%{opacity:1}to{opacity:0}}@keyframes vt-hold-in{0%,60%{opacity:0}to{opacity:1}}html:active-view-transition-type(to-case)::view-transition-old(cs-title){opacity:0;animation:none}html:active-view-transition-type(to-list)::view-transition-new(cs-title){opacity:0;animation:none}html:active-view-transition-type(to-case)::view-transition-new(cs-title){opacity:1;animation:none}html:active-view-transition-type(to-list)::view-transition-old(cs-title){opacity:1;animation:none}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation-duration:.15s}::view-transition-new(root){animation-duration:.15s}::view-transition-old(site-nav){animation-duration:.15s}::view-transition-new(site-nav){animation-duration:.15s}}@media (prefers-reduced-motion:no-preference){.button:active,.lang-btn:active,.icon-btn:active,.theme-toggle:active,.motion-toggle:active,.menu-btn:active,.face-switch button:active,.copy-email:active{scale:.97}.project-card:active,.reel-tile:active .reel-media{scale:.98}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
