:root{color-scheme:light;--bg: #f7f6f2;--ink: #333333;--muted: #666666;--sidebar-muted: #8f8b84;--line: #dedbd1;--surface: #ffffff;--accent: #8a2f2b;--max: 1180px;--header-height: 40px;--page-pad: clamp(18px, 4vw, 48px);--grid-gap: 56px;--sidebar-width: clamp(178px, 18vw, 260px)}*{box-sizing:border-box}html{background:var(--bg);font-family:Helvetica Neue,Helvetica,Arial,Microsoft Yahei,Hiragino Sans GB,Hiragino Sans GB W3,sans-serif;scroll-behavior:smooth}body{display:flex;flex-direction:column;min-height:100vh;margin:0;color:var(--ink);background:var(--bg)}body.viewer-open{overflow:hidden}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.site-header{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:clamp(28px,8vw,120px);min-height:var(--header-height);padding:0 var(--page-pad);background:var(--bg)}.brand{min-width:270px;font-size:17px;font-weight:700;line-height:1;letter-spacing:0}.nav-groups{display:grid;grid-template-columns:repeat(2,max-content);gap:clamp(120px,18vw,240px);color:var(--muted);font-size:13px;line-height:1}.nav-group{position:relative;display:grid;gap:0;justify-items:end}.nav-group button,.nav-group a,.nav-year button{position:relative;display:inline-flex;align-items:center;gap:6px;margin:0;padding:0;border:0;background:transparent;color:var(--ink);cursor:pointer;font:inherit;font-weight:400;text-align:right;transition:color .16s ease}.nav-group>button:after,.nav-group a:after,.nav-menu button:after,.nav-year>button:after{position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;content:"";opacity:0;transform:scaleX(.72);transform-origin:center;transition:opacity .16s ease,transform .16s ease}.nav-group>button:hover,.nav-group:focus-within>button,.nav-group a:hover,.nav-menu button:hover,.nav-menu button.is-active,.nav-year:hover>button,.nav-year:focus-within>button{color:var(--muted)}.nav-group>button:hover:after,.nav-group:focus-within>button:after,.nav-group a:hover:after,.nav-menu button:hover:after,.nav-menu button.is-active:after,.nav-year:hover>button:after,.nav-year:focus-within>button:after{opacity:1;transform:scaleX(1)}.nav-chevron{width:6px;height:6px;margin-top:-2px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;opacity:.58;transform:rotate(45deg)}.nav-chevron-side{margin-top:0;transform:rotate(45deg)}.nav-group .nav-menu{position:absolute;top:100%;right:0;display:grid;gap:7px;min-width:136px;padding-top:10px;justify-items:end;text-align:right;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease}.nav-date-menu{min-width:118px;overflow:visible}.nav-year{position:relative;display:grid;justify-items:end}.nav-year>button{color:var(--muted)}.nav-submenu{position:absolute;top:-10px;left:calc(100% + 18px);display:grid;gap:7px;min-width:220px;max-width:min(280px,calc(100vw - 40px));max-height:min(64vh,520px);padding:10px 0;justify-items:start;text-align:left;overflow:auto;opacity:0;pointer-events:none;transform:translate(-6px);transition:opacity .18s ease,transform .18s ease}.nav-submenu:before{position:absolute;top:0;bottom:0;left:-18px;width:18px;content:""}.nav-year:hover .nav-submenu,.nav-year:focus-within .nav-submenu{opacity:1;pointer-events:auto;transform:translate(0)}.nav-group:hover .nav-menu,.nav-group:focus-within .nav-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-group a{color:var(--muted);font-weight:400;transition:color .16s ease}.nav-group a:hover{color:var(--ink)}.nav-menu button{color:var(--muted);font-weight:400}.nav-menu button:hover,.nav-menu button.is-active{color:var(--ink)}.site-main{flex:1;min-height:70vh}.site-header~main{padding-top:var(--header-height)}.site-main.with-sidebar{min-height:100vh;padding-left:var(--sidebar-width)}html[data-language=en]:not([data-language-ready]) [data-lang-zh]{visibility:hidden}.site-sidebar{position:fixed;top:0;bottom:0;left:0;z-index:40;width:var(--sidebar-width);padding:24px 22px;overflow:auto;background:var(--bg);color:var(--ink);font-family:SimHei,Microsoft Yahei,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.35}.language-toggle{position:fixed;top:22px;right:var(--page-pad);z-index:60;min-height:0;width:auto;border:0;padding:0;background:transparent;color:var(--muted);cursor:pointer;font:inherit;font-family:SimHei,Microsoft Yahei,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:12px;line-height:1}.language-toggle:hover,.language-toggle:focus-visible{color:var(--ink)}.sidebar-brand{display:inline-block;margin-bottom:34px;color:var(--ink);font-size:17px;font-weight:700;line-height:1}.sidebar-nav{color:var(--sidebar-muted)}.sidebar-nav,.sidebar-project-list,.sidebar-project{display:grid}.sidebar-nav{gap:14px}.sidebar-project-list{gap:9px}.sidebar-project{gap:5px}.sidebar-project>a:first-child,.sidebar-other summary,.sidebar-about{position:relative;width:max-content;max-width:100%}.sidebar-project.is-active>a:first-child,.sidebar-about.is-active{color:var(--ink)}.sidebar-project a:hover,.sidebar-other summary:hover,.sidebar-about:hover{color:var(--ink)}.sidebar-other{display:grid;gap:9px}.sidebar-other summary{list-style:none;cursor:pointer}.sidebar-other summary::-webkit-details-marker{display:none}.sidebar-other-list{padding:6px 0 8px 15px;color:var(--sidebar-muted)}.mobile-sidebar-bar,.mobile-menu-overlay{display:none}.mobile-sidebar-brand{color:var(--ink);font-family:SimHei,Microsoft Yahei,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:17px;font-weight:700;line-height:1}.mobile-menu-button,.mobile-menu-close,.mobile-language-toggle{border:0;padding:0;background:transparent;color:var(--ink);cursor:pointer;font:inherit}.mobile-menu-button,.mobile-menu-close{display:inline-grid;align-items:center;justify-items:center}.mobile-menu-button{width:16px;height:12px;align-content:space-between}.mobile-menu-button span{display:block;width:100%;height:1px;background:currentColor}.mobile-menu-close{line-height:1}.mobile-language-toggle{display:none;color:var(--muted);font-family:SimHei,Microsoft Yahei,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1}.home-carousel{position:relative;height:100vh;min-height:560px;overflow:hidden;background:var(--bg);cursor:pointer;touch-action:manipulation;user-select:none}.home-fade-stage{position:absolute;inset:0}.home-carousel-slide{--home-slide-gap: clamp(22px, 3.2vw, 46px);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:var(--home-slide-gap);color:#fff;opacity:0;pointer-events:none;transition:opacity .76s ease;-webkit-user-drag:none}.home-carousel-slide.is-active{opacity:1;pointer-events:auto}.home-carousel-image-frame{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:0;overflow:visible}.home-carousel-slide img{display:block;width:auto;height:auto;max-width:calc(100vw - var(--sidebar-width) - var(--home-slide-gap) - var(--home-slide-gap));max-height:calc(100dvh - 96px);object-fit:contain;pointer-events:none;-webkit-user-drag:none}.home-fade-caption{position:absolute;left:0;right:0;bottom:25px;z-index:2;color:var(--ink);font-size:13px;line-height:1.35;text-align:center;pointer-events:none}.home-fade-caption,.project-lightbox-stage figcaption{display:none}.hero{position:relative;min-height:min(760px,calc(100vh - 72px));overflow:hidden;background:#111}.hero img{width:100%;height:min(760px,calc(100vh - 72px));min-height:520px;object-fit:cover;opacity:.76}.hero-copy{position:absolute;left:clamp(22px,7vw,92px);bottom:clamp(28px,8vw,92px);max-width:720px;color:#fff}.hero-copy p,.section-heading p,.page-intro p,.project-header p,.about-kicker,.photo-card p{margin:0 0 12px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.hero-copy p{color:color-mix(in srgb,#fff 76%,transparent)}.hero-copy h1,.page-intro h1,.project-header h1,.about-page h1{margin:0;max-width:860px;font-family:Georgia,Times New Roman,serif;font-size:clamp(48px,9vw,132px);font-weight:400;line-height:.92;letter-spacing:0}.hero-copy span,.page-intro span,.project-header span{display:block;max-width:580px;margin-top:22px;color:color-mix(in srgb,currentColor 78%,transparent);font-size:clamp(16px,2vw,20px);line-height:1.5}.section-heading,.home-intro,.page-intro,.home-filter,.photo-grid,.project,.about-page{width:min(var(--max),calc(100% - 36px));margin-inline:auto}.home-filter{position:fixed;top:16px;right:220px;z-index:30;width:180px}.home-filter select{width:100%;height:28px;border:0;border-radius:0;background:transparent;color:var(--text);font:inherit;font-size:12px}.home-intro{padding:54px 0 28px}.home-intro p{margin:0 0 10px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.home-intro h1{margin:0;font-size:clamp(28px,4vw,52px);font-weight:500;letter-spacing:0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:76px 0 28px}.section-heading h2{margin:0;font-size:clamp(26px,4vw,48px);font-weight:500;letter-spacing:0}.photo-grid{column-count:3;column-gap:var(--grid-gap);width:calc(100% - (var(--grid-gap) * 2));max-width:none;padding-top:28px;padding-bottom:100px;font-size:0;line-height:0}.photo-card{display:block;width:100%;border:0;margin:0 0 var(--grid-gap);padding:0;break-inside:avoid;overflow:hidden;background:color-mix(in srgb,var(--line) 72%,var(--bg));color:inherit;cursor:pointer;font:inherit;line-height:0;text-align:inherit}.photo-card[hidden]{display:none}.photo-card img{width:100%;height:auto;background:var(--line);opacity:0;filter:blur(10px);transform:scale(1.012);transition:opacity .52s ease,filter .7s ease,transform .7s ease;vertical-align:top}.photo-card.is-loaded img{opacity:1;filter:blur(0);transform:scale(1)}.home-viewer{position:fixed;inset:0;z-index:80;display:grid;grid-template-rows:minmax(72px,auto) minmax(0,1fr) minmax(72px,auto);align-items:center;justify-items:center;padding:26px clamp(22px,5vw,72px);background:color-mix(in srgb,var(--bg) 96%,transparent);opacity:0;pointer-events:none;transition:opacity .22s ease}.home-viewer[aria-hidden=false]{opacity:1;pointer-events:auto}.page-viewer .home-viewer-title,.page-viewer .home-viewer-tags{display:none}.home-viewer-title,.home-viewer-tags,.home-viewer-close,.home-viewer-grid-link,.home-viewer-nav{z-index:2;color:var(--ink);font-size:12px;letter-spacing:0}.home-viewer-title{align-self:start;padding-top:2px;text-align:center;text-transform:uppercase}.home-viewer-tags{align-self:end;max-width:min(720px,90vw);color:var(--muted);text-align:center}.home-viewer-close,.home-viewer-grid-link,.home-viewer-nav{border:0;padding:0;background:transparent;cursor:pointer;font:inherit}.home-viewer-grid-link{position:fixed;top:12px;right:19px;z-index:5;display:grid;width:44px;height:44px;place-items:center}.home-viewer-grid-link span{position:relative;display:block;width:17px;height:17px}.home-viewer-grid-link span:before{position:absolute;top:0;left:0;width:3px;height:3px;background:currentColor;box-shadow:7px 0 0 currentColor,14px 0 0 currentColor,0 7px 0 currentColor,7px 7px 0 currentColor,14px 7px 0 currentColor,0 14px 0 currentColor,7px 14px 0 currentColor,14px 14px 0 currentColor;content:""}.home-viewer-close{position:fixed;top:26px;left:32px;z-index:5;width:18px;height:18px}.home-viewer-close span,.home-viewer-close span:before{position:absolute;top:50%;left:50%;width:18px;height:1px;background:currentColor;content:""}.home-viewer-close span{transform:translate(-50%,-50%) rotate(45deg)}.home-viewer-close span:before{transform:translate(-50%,-50%) rotate(90deg)}.home-viewer-nav{position:fixed;top:72px;bottom:72px;width:96px;color:color-mix(in srgb,var(--ink) 62%,transparent);font-size:20px}.home-viewer-prev{left:0;text-align:left;padding-left:32px}.home-viewer-next{right:0;text-align:right;padding-right:32px}.home-viewer-stage{grid-row:2;width:100%;height:100%;margin:0;overflow:hidden;user-select:none}.home-viewer-track{display:flex;align-items:center;gap:clamp(28px,4vw,64px);width:max-content;height:100%;transition:transform .52s cubic-bezier(.76,0,.24,1);will-change:transform}.home-viewer-track.without-transition,.home-viewer-track.is-dragging{transition:none}.home-viewer-slide{display:flex;flex:0 0 auto;align-items:center;justify-content:center;width:min(72vw,1120px);height:100%}.home-viewer-slide img{width:auto;height:auto;max-width:100%;max-height:74vh;opacity:0;filter:blur(8px);transform:scale(.992);pointer-events:none;transition:opacity .24s ease,filter .36s ease,transform .36s ease}.home-viewer-slide img.is-loaded{opacity:1;filter:blur(0);transform:scale(1)}.photo-card-caption{display:grid;gap:8px;padding-top:10px;opacity:0;transform:translateY(-4px);transition:opacity .18s ease,transform .18s ease}.photo-card:hover .photo-card-caption,.photo-card:focus-visible .photo-card-caption{opacity:1;transform:translateY(0)}.photo-card p{margin-bottom:0}.photo-card h2{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(24px,3vw,34px);font-weight:400;line-height:1}.photo-card span{color:var(--muted);font-size:14px;line-height:1.45}.page-intro{padding:88px 0 42px}.project{display:grid;grid-template-columns:minmax(180px,230px) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:start;width:100%;padding:44px clamp(18px,4vw,48px) 100px}.project-gallery{display:grid;grid-template-columns:1fr;min-height:calc(100vh - var(--header-height));gap:clamp(26px,4vw,52px);align-content:space-between;padding:30px var(--page-pad) 32px}.project-gallery-header,.project-gallery-footer{color:var(--ink);font-size:12px;text-align:center}.project-gallery-header h1{margin:0;font:inherit;font-weight:500;text-transform:uppercase}.project-gallery-footer{color:var(--muted)}.project-info{position:sticky;top:calc(var(--header-height) + 44px);display:grid;justify-items:start;gap:10px;padding-left:10px;text-align:left}.project-back{width:fit-content;color:var(--muted);font-size:14px;font-weight:400;line-height:1}.project-back:hover{color:var(--ink)}.project-info p{margin:12px 0 0;color:var(--muted);font-size:11px;font-weight:500;letter-spacing:0;text-transform:none}.project-info h1{margin:0;font-family:inherit;font-size:18px;font-weight:500;line-height:1.15;letter-spacing:0}.project-info>span,.project-body{color:var(--muted);font-size:12px;line-height:1.5}.project-body{margin-top:10px}.project-body p{margin:0 0 1em}.project-overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(18px,3vw,40px);align-items:center}.project-image{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:transparent;line-height:0}.project-image img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;transition:opacity .16s ease,transform .18s ease}.project-image:hover img{opacity:.68;transform:scale(.985)}.project-detail{display:grid;grid-template-columns:minmax(0,1fr);width:100%;min-height:100vh;padding:50px var(--page-pad) 96px}.project-sidebar{position:sticky;top:calc(var(--header-height) + 50px);align-self:start;display:grid;gap:10px;color:var(--muted);font-size:12px;font-weight:400;line-height:1.5}.project-sidebar h1{margin:0;color:#000;font-family:inherit;font-size:16px;font-weight:400;line-height:1;letter-spacing:0}.project-sidebar p{margin:0 0 16px;color:var(--muted);font-size:14px;font-weight:400;letter-spacing:0;line-height:1.4;text-transform:none}.project-sidebar span{max-width:26em;color:var(--ink);font-size:12px;line-height:1.5}.project-sidebar dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 14px;margin:18px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.project-sidebar dt{color:var(--muted);font-weight:400}.project-sidebar dd{margin:0}.project-thumbnail-groups{display:grid;gap:clamp(30px,4vw,58px);align-content:start}.project-thumbnail-group{display:grid;gap:16px}.project-thumbnail-group hr{width:100%;height:1px;margin:0 0 14px;border:0;background:var(--line)}.project-thumbnail-group h2{margin:0;color:#000;font-size:14px;font-weight:400;letter-spacing:0;line-height:1;text-transform:none}.project-description{display:grid;gap:16px;max-width:720px}.project-description hr{width:100%;height:1px;margin:0 0 14px;border:0;background:var(--line)}.project-description h2{margin:0;color:#000;font-size:14px;font-weight:400;letter-spacing:0;line-height:1;text-transform:none}.project-description p{margin:0;color:var(--ink);font-size:13px;line-height:1.72;white-space:pre-wrap}.project-thumbnails{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(26px,4vw,58px);align-items:center;justify-items:center}.project-thumb{position:relative;display:block;aspect-ratio:1;width:100%;overflow:hidden;border:0;padding:0;background:transparent;cursor:pointer;line-height:0}.project-thumb img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;transition:opacity .16s ease,transform .18s ease}.project-thumb:hover img,.project-thumb:focus-visible img{opacity:.72;transform:scale(.985)}.project-lightbox{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:34px clamp(18px,4vw,56px);background:color-mix(in srgb,var(--bg) 97%,transparent);opacity:0;pointer-events:none;transition:opacity .18s ease}.project-lightbox[aria-hidden=false]{opacity:1;pointer-events:auto}.project-lightbox.is-zoom-mode{padding:0}.project-lightbox-stage{display:grid;gap:8px;justify-items:center;width:100%;margin:0;touch-action:none}.project-lightbox-viewport{width:min(86vw,1400px);overflow:hidden}.project-lightbox-track{display:flex;width:100%;transform:translate3d(-100%,0,0)}.project-lightbox-track.is-animated{transition:transform .22s ease-out}.project-lightbox-frame{display:flex;flex:0 0 100%;align-items:center;justify-content:center;min-width:0}.project-lightbox-stage img{width:auto;height:auto;max-width:min(86vw,1400px);max-height:78vh;object-fit:contain;transition:transform .18s ease;transform-origin:center center;will-change:transform;-webkit-user-drag:none;user-select:none}.project-lightbox-stage.is-dragging img,.project-lightbox-stage.is-zoomed img{transition:none}.project-lightbox.is-zoom-mode .project-lightbox-stage{align-content:center;width:100vw;height:100dvh;gap:0}.project-lightbox.is-zoom-mode .project-lightbox-viewport{width:100vw;height:100dvh}.project-lightbox.is-zoom-mode .project-lightbox-frame{height:100dvh}.project-lightbox.is-zoom-mode .project-lightbox-stage img{max-width:100vw;max-height:100dvh}.project-lightbox.is-zoom-mode .project-lightbox-stage figcaption,.project-lightbox.is-zoom-mode .project-lightbox-description,.project-lightbox.is-zoom-mode .project-lightbox-count,.project-lightbox.is-zoom-mode .project-lightbox-nav,.project-lightbox.is-zoom-mode .project-music{opacity:0;pointer-events:none}.project-lightbox-stage figcaption{color:var(--muted);font-size:12px;font-weight:400;line-height:1.5}.project-lightbox-count{position:fixed;right:var(--page-pad);bottom:24px;z-index:2;color:var(--muted);font-size:12px;font-weight:400;line-height:1}.project-lightbox-description{margin-top:-3px;max-width:min(86vw,1400px);color:var(--muted);font-size:12px;font-weight:400;line-height:1.6;text-align:left;white-space:pre-wrap}.project-lightbox-description:empty{display:none}.project-lightbox-close,.project-lightbox-nav{position:fixed;z-index:2;border:0;padding:0;background:transparent;color:var(--ink);cursor:pointer;font:inherit}.project-lightbox-close{top:26px;left:32px;width:18px;height:18px}.project-lightbox-close span,.project-lightbox-close span:before{position:absolute;top:50%;left:50%;width:18px;height:1px;background:currentColor;content:""}.project-lightbox-close span{transform:translate(-50%,-50%) rotate(45deg)}.project-lightbox-close span:before{transform:translate(-50%,-50%) rotate(90deg)}.project-lightbox-nav{top:90px;bottom:90px;width:90px;color:color-mix(in srgb,var(--ink) 58%,transparent);font-size:18px;font-weight:400}.project-lightbox-prev{left:0;text-align:left;padding-left:32px}.project-lightbox-next{right:0;text-align:right;padding-right:32px}.project-music{position:fixed;left:var(--page-pad);bottom:24px;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:12px;font-weight:400;line-height:1}.project-music-toggle{position:relative;width:14px;height:14px;border:0;padding:0;background:transparent;color:var(--ink);cursor:pointer;opacity:.68}.project-music-toggle:hover,.project-music-toggle:focus-visible{opacity:1}.project-music-toggle span,.project-music-toggle span:before,.project-music-toggle span:after{position:absolute;content:""}.project-music-toggle span{top:2px;left:4px;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:7px solid currentColor}.project-music-toggle[aria-pressed=true] span{top:2px;left:3px;width:3px;height:10px;border:0;background:currentColor}.project-music-toggle[aria-pressed=true] span:after{top:0;left:6px;width:3px;height:10px;background:currentColor}.project-music-name{max-width:min(180px,28vw);overflow:hidden;color:color-mix(in srgb,var(--ink) 62%,transparent);line-height:14px;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .9s ease}.project-music-progress{width:min(110px,20vw);height:2px;margin:0;accent-color:var(--ink);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .9s ease}.project-music.is-playing:hover .project-music-name,.project-music.is-playing:focus-within .project-music-name,.project-music.is-playing.is-revealed .project-music-name,.project-music.is-playing:hover .project-music-progress,.project-music.is-playing:focus-within .project-music-progress,.project-music.is-playing.is-revealed .project-music-progress{opacity:.5;pointer-events:auto}.project-music-progress::-webkit-slider-runnable-track{height:2px;background:color-mix(in srgb,var(--ink) 30%,transparent)}.project-music-progress::-webkit-slider-thumb{width:0;height:0;margin-top:0;border-radius:50%;opacity:0}.project-music-progress:hover::-webkit-slider-thumb,.project-music-progress:focus-visible::-webkit-slider-thumb{opacity:0}.project-music-progress::-moz-range-track{height:2px;background:color-mix(in srgb,var(--ink) 30%,transparent)}.project-music-progress::-moz-range-thumb{width:0;height:0;border:0;border-radius:50%;opacity:0}.project-music-progress:hover::-moz-range-thumb,.project-music-progress:focus-visible::-moz-range-thumb{opacity:0}.viewer{min-height:100vh;position:relative;display:flex;align-items:center;justify-content:center;padding:18px}.viewer-meta{position:fixed;top:18px;left:24px;z-index:3;padding:0;color:var(--muted);font-size:11px}.viewer-meta a{width:fit-content}.viewer-meta a:hover{color:var(--ink)}.viewer-stage{position:relative;min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;touch-action:pan-y}.viewer-stage img{max-width:min(88vw,1400px);max-height:86vh;width:auto;height:auto;object-fit:contain}.viewer-nav{position:absolute;top:0;bottom:0;display:flex;align-items:center;width:28%;color:color-mix(in srgb,var(--ink) 32%,transparent);font-size:20px;font-family:inherit;font-weight:300;line-height:1}.viewer-nav:hover{color:var(--ink)}.viewer-prev{left:0;justify-content:flex-start;padding-left:4px}.viewer-next{right:0;justify-content:flex-end;padding-right:4px}.about-page{display:grid;grid-template-columns:minmax(0,560px) minmax(160px,260px);align-items:start;gap:clamp(34px,5.5vw,84px);justify-content:space-between;width:calc(100% - 36px);margin-inline:18px;padding:74px 0 110px}.about-page.without-portrait{display:block;width:min(100%,560px)}.about-page h1{margin:0 0 24px;font-family:inherit;font-size:clamp(18px,1.7vw,24px);font-weight:400;line-height:1.18}.about-profile{align-self:start;justify-self:end}.about-profile img{width:min(100%,260px);aspect-ratio:1;object-fit:cover}.about-copy{max-width:560px;align-self:start;color:var(--ink);font-size:13px;line-height:1.72}.about-copy p{margin:0 0 16px}.about-copy .about-body{white-space:pre-wrap}.about-contact{display:grid;justify-items:start;gap:6px;padding-top:8px;color:var(--muted)}.about-contact a{position:relative;transition:color .16s ease}.about-contact a:hover{color:var(--ink)}.site-footer{display:flex;justify-content:space-between;gap:24px;padding:28px clamp(18px,4vw,48px);color:var(--muted);font-size:14px}.site-footer p{margin:0}@media(max-width:820px){:root{--header-height: 40px;--grid-gap: 24px}body:has(.home-carousel){height:100dvh;overflow:hidden}body.mobile-menu-open{overflow:hidden}.site-sidebar{display:none}.site-main.with-sidebar{padding-top:52px;padding-left:0}.mobile-sidebar-bar{position:fixed;top:0;left:0;right:0;z-index:80;display:flex;align-items:center;justify-content:flex-start;min-height:52px;padding:0 18px;background:var(--bg)}.mobile-sidebar-brand{font-size:19px}.mobile-menu-button{position:absolute;top:50%;right:18px;z-index:1;width:20px;height:14px;transform:translateY(-50%)}.mobile-menu-overlay{position:fixed;inset:0;z-index:90;display:block;visibility:hidden;background:color-mix(in srgb,var(--bg) 94%,transparent);opacity:0;pointer-events:none;transition:opacity .18s ease,visibility .18s ease}.mobile-menu-overlay.is-open{visibility:visible;opacity:1;pointer-events:auto}.mobile-menu-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;justify-items:center;min-height:100dvh;padding:18px;overflow:auto;background:var(--bg);color:var(--sidebar-muted);font-family:SimHei,Microsoft Yahei,PingFang SC,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.35;text-align:center}.mobile-menu-head{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;margin-bottom:34px}.mobile-menu-close{width:20px;height:20px;font-size:20px}.mobile-menu-nav{display:grid;align-content:start;gap:18px;max-width:min(320px,86vw);justify-items:center}.mobile-menu-nav .sidebar-project-list,.mobile-menu-nav .sidebar-project,.mobile-menu-nav .sidebar-other{justify-items:center}.mobile-menu-nav .sidebar-other-list{padding:8px 0 10px}.language-toggle{display:none}.mobile-language-toggle{display:inline-flex;align-self:end;margin-bottom:4px;color:var(--muted);font-size:15px}.site-header{gap:18px;min-height:var(--header-height);padding-block:0}.brand{min-width:0;font-size:18px}.photo-grid{column-count:2;width:calc(100% - 32px);padding-top:18px}.home-filter{position:static;width:min(var(--max),calc(100% - 36px));padding-bottom:14px}.home-carousel{height:calc(100vh - 52px);height:calc(100dvh - 52px);min-height:520px}.home-carousel-slide{--home-slide-gap: 10px;padding:var(--home-slide-gap)}.home-carousel-slide img{max-width:calc(100vw - var(--home-slide-gap) - var(--home-slide-gap));max-height:calc(100dvh - 72px)}.about-page{grid-template-columns:1fr}.about-profile img{width:min(58vw,220px)}.project{grid-template-columns:1fr}.project-detail{grid-template-columns:1fr;padding-top:28px}.project-info,.project-sidebar{position:static}.project-overview,.project-thumbnails{grid-template-columns:repeat(3,minmax(0,1fr))}.viewer{grid-template-columns:1fr}.viewer-meta{padding-left:0}.section-heading{display:block}.site-footer{display:grid}}@media(max-width:520px){:root{--header-height: 40px;--page-pad: 14px;--grid-gap: 12px}.site-header{align-items:center;padding-block:0}.nav-groups{width:auto;gap:28px;font-size:13px}.photo-grid{column-count:1;width:calc(100% - 20px);padding-top:10px;padding-bottom:56px}.home-viewer{grid-template-rows:minmax(52px,auto) minmax(0,1fr) minmax(52px,auto);padding:18px 14px;touch-action:pan-y}.home-viewer-stage{touch-action:pan-y}.home-viewer-track{gap:18px}.home-viewer-slide{width:calc(100vw - 28px)}.home-viewer-slide img{max-height:70vh}.home-viewer-nav{display:none}.home-viewer-close{top:18px;left:14px}.home-viewer-grid-link{top:5px;right:2px}.home-carousel{height:calc(100dvh - 52px);min-height:0}.home-carousel-slide span{right:var(--page-pad);font-size:clamp(32px,14vw,58px)}.home-carousel-meta{left:var(--page-pad);right:auto;bottom:18px}.project-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.project-thumbnails{grid-template-columns:minmax(0,1fr);gap:24px}.project-lightbox{--lightbox-pad-x: 10px;--lightbox-content-width: calc(100vw - var(--lightbox-pad-x) - var(--lightbox-pad-x));padding:18px 0}.project-lightbox-stage,.project-lightbox-viewport{width:100vw}.project-lightbox-stage img{max-width:calc(100vw - 20px);max-height:78vh}.project-lightbox-nav{display:none}.project-lightbox-close{top:18px;left:14px}.project-music{left:14px;right:14px;justify-content:space-between}.viewer-nav{display:none}.hero-copy{left:18px;right:18px}}
